home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / hk / bas / hkanly.bas next >
Encoding:
BASIC Source File  |  1993-11-30  |  62.2 KB  |  1,702 lines

  1. 10 '------------------------------------------------------------------
  2. 20 '  HKANLY.BAS  Copyrigit(C) T.Komura    / 家計簿システム HK   /
  3. 30 '                                       / Version 1           /
  4. 31 '   Version 4.0  1992.08.04-1992.09.14  / 分析プログラム      /
  5. 32 '           4.0a 1992.10.11 エンゲル係数基数を収入計から支出計に修正
  6. 33 'HK Version 1.0  1993.01.01 公開バージョン
  7. 34 '   Version 1.1  1993.08.04 分析条件ウインドウを12ドットフォント化
  8. 100 '------------------------------------------------------------------
  9. 120 CLEAR ,,,,300*1024
  10. 165 DIM CFI$(15)
  11. 170 GOSUB *CONFIGファイルチェック
  12. 190 '
  13. 193 VERN$="1.1" 'バージョンNo.
  14. 200 *初期設定:'--------------------------------------------------------
  15. 210 CMD$="CD "+PRGDRV$:SHELL CMD$
  16. 220 SCREEN@ 0 :COLOR 7,0,0,4:CLS:CONSOLE 5,17,2:MOUSE 0
  17. 230 DIM MSGD%(28000):' 音声メッセージ配列定義 プログラム先頭で定義
  18. 240 LOAD@ FMBDRV$+"\FMP.FMB"
  19. 250 PLAY "@30T150V4":DATX$=DATE$
  20. 260 DIM XB1(3,30),XB2(3,30),YB1(3,30),YB2(3,30),BST(3,30)
  21. 270 DIM ITEM$(20),ITEMC(20),SMOPT(10,3),MESH$(20),IMSH(15)
  22. 280 DIM MX$(20),MX#(20),DYN$(18),DYN#(18),DRM$(16),GDT#(6,31)
  23. 290 DIM GDYY(31*12),GDYM$(31*12),GDYE$(31*12)
  24. 300 INTERVAL 1                  :'プログラム先頭
  25. 310 ON INTERVAL GOSUB *時計表示 :'プログラム先頭 
  26. 320 GOSUB *ボタン座標読み取り
  27. 325 GOSUB *分析モード読み取り
  28. 330 GOSUB *メッシュデータ定義
  29. 340 'CLS:COLOR 7:PRINT int((int(((557-208+1)+7)/8)*(333-125+1)*4+8-1)/8)
  30. 350 DIM CUTN#(795),ANLS#(4598),SUBW#(664),ANLW#(13065)
  31. 370 ON ERROR GOTO *ERROR
  32. 980 '
  33. 1000 *メインルーチン:'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  34. 1005 GOSUB *表紙表示
  35. 1010 MESN=18:GOSUB *SNDMSG
  36. 1015 MESN=1:GOSUB *MESDSP
  37. 1020 GOSUB *本日の日付
  38. 1030 SMODC=7:GOSUB *分析モード表示
  39. 1040 MOUSE 1,320,64,1
  40. 1100 *メイン選択
  41. 1110 IF MES2OFF=0 THEN MESN=2:GOSUB *MESDSP
  42. 1130 SWPASS=0:G=1:GOSUB *マウスボタン選択
  43. 1150 ON SWNO GOTO *S01,*S02,*S03,*S04,*S05,*S06
  44. 1160 GOTO 1100:STOP
  45. 1190 '
  46. 1200 *S01:'モード変更 --------------------------------------------------
  47. 1210  MODDEF=-1:GOTO *MODECHG
  48. 1220 *S02:'モード変更 --------------------------------------------------
  49. 1230  MODDEF=+1:GOTO *MODECHG
  50. 1250 *MODECHG
  51. 1260  G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  52. 1265  IF SMODSEL=1 THEN MES2OFF=1:GOTO 1320
  53. 1270  SMODE=SMODE+MODDEF
  54. 1280  IF SMODE>MODEN THEN SMODE=1:GOTO 1300
  55. 1290  IF SMODE<1 THEN SMODE=MODEN:GOTO 1300
  56. 1300  ANLF=0:SMODC=7:GOSUB *分析モード表示
  57. 1310  MES2OFF=0
  58. 1320  G=1:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  59. 1330  GOTO *メイン選択
  60. 1340 '
  61. 1500 *S03:'モード選択 ---------------------------------------------------
  62. 1510  G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  63. 1520  SMODSEL=1:SMODC=4:GOSUB *分析モード表示
  64. 1530  'PUT@A(88,90)-(215,172),SUBW#
  65. 1550  IF SMODE=9 THEN 1610
  66. 1560  CDTSET=0:GOSUB *分析条件設定
  67. 1570  IF ANLCAN=0 THEN 1600
  68. 1575  SMODSEL=0:SMODC=7:GOSUB *分析モード表示
  69. 1580  MES2OFF=0:GOTO 1625
  70. 1590 '
  71. 1600  GOSUB *分析結果画面消去
  72. 1605  GOSUB *分析条件表示:CDTSET=1
  73. 1610  MESN=13:GOSUB *MESDSP:MESN=16:GOSUB *SNDMSG
  74. 1620  MES2OFF=1
  75. 1625  G=1:B=3:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  76. 1630  GOTO *メイン選択
  77. 1690 '
  78. 1700 *S05:'取消 ---------------------------------------------------------
  79. 1710  G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  80. 1720  IF SMODSEL=1 THEN 1750
  81. 1730  MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
  82. 1740  FOR II=1 TO 5000:NEXT II:GOTO 1760
  83. 1750  GOSUB *分析条件消去:SMODSEL=0
  84. 1751  ANLF=0
  85. 1755  SMODC=7:GOSUB *分析モード表示
  86. 1760  MES2OFF=0
  87. 1770  G=1:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  88. 1780  GOTO *メイン選択
  89. 1790 '
  90. 1920 '
  91. 2000 *S04:'実行 --------------------------------------------------------
  92. 2010  G=1:B=4:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  93. 2020  IF SMODSEL=1 THEN 2100
  94. 2030  MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
  95. 2040  FOR II=1 TO 5000:NEXT II:MES2OFF=0:GOTO 2470
  96. 2090 '
  97. 2100  ON SMODE GOSUB *AN01,*AN02,*AN03,*AN04,*AN05,                                              *AN06,*AN07,*AN08,*AN09
  98. 2110  IF SMODE=3 THEN 2236
  99. 2120  MESN=14:GOSUB *SNDMSG
  100. 2236  ANLF=1:SMODC=7:GOSUB *分析モード表示
  101. 2240  MES2OFF=0
  102. 2460  SMODSEL=0
  103. 2470  G=1:B=4:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  104. 2480  GOTO *メイン選択
  105. 2490 '
  106. 8940 '
  107. 9000 *S06:'終了・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  108. 9020 G=1:B=6:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  109. 9060 '
  110. 9110 MESN=9:GOSUB *MESDSP:MESN=24:GOSUB *SNDMSG
  111. 9130 INTERVAL OFF
  112. 9140 CHAIN "HKMAIN.BAS"
  113. 9150 STOP:SYSTEM
  114. 9160 '
  115. 9900 '-------------------------------------------------------------------
  116. 9910 '    GENERAL SUB ROUTINE
  117. 9920 '-------------------------------------------------------------------
  118. 10000 *CHR1IN:'////////// 1文字入力
  119. 10010  A$=INKEY$:IF A$="" THEN 10010
  120. 10020  A=INSTR(C$,A$)
  121. 10030  IF A=0 THEN MESN=13:GOSUB *SNDMSG:GOTO 10010
  122. 10040  RETURN
  123. 10050 '
  124. 10060 '
  125. 10070 *MESDSP:'////////// メッセージ表示
  126. 10080  RESTORE *MESDAT
  127. 10090  FOR IM=1 TO MESN:READ XM,YM,CM,CB,BM,MES$:NEXT IM
  128. 10100  LOCATE 0,YM:COLOR CB,CB:PRINT SPACE$(79);
  129. 10110  LOCATE XM,YM:COLOR CM,CB:PRINT MES$;
  130. 10120  'IF BM=1 THEN PLAY "L4O4A"
  131. 10130  RETURN
  132. 10140 '
  133. 10200 *MESDAT:'////////// メッセージデータ
  134. 10205 '    XM, YN, CM, CB, BM
  135. 10210 DATA  2, 23,  5,  0,  1 :'--- 01
  136. 10215 DATA "                     - HK version 4.0 - 分析               [HKANLY.BAS L10]"
  137. 10220 DATA  2, 23,  7,  0,  0 :'--- 02
  138. 10225 DATA "分析モードを[▲][▼]ボタンで選んで[SELECT]を押してください。"
  139. 10230 DATA  2, 23,  7,  0,  0 :'--- 03
  140. 10235 DATA "●印の分析条件を設定してください。"
  141. 10240 DATA  2, 23,  4,  0,  1 :'--- 04
  142. 10245 DATA "★分析条件ファイル読み込み中 !!"
  143. 10250 DATA  2, 23,  4,  0,  1 :'--- 05
  144. 10255 DATA "★分析条件ファイル保存中 !!"
  145. 10260 DATA  2, 23,  6,  0,  1 :'--- 06
  146. 10265 DATA "この分析モードでは、指定した分析条件は無効です。"
  147. 10270 DATA  2, 23,  6,  0,  0 :'--- 07
  148. 10275 DATA "分析開始年月が分析終了年月よりも大きくなっています。 訂正してください。"
  149. 10280 DATA  2, 23,  6,  0,  0 :'--- 08
  150. 10285 DATA "分析終了年月をもう少し小さく設定してください。"
  151. 10290 DATA  2, 23,  5,  0,  1 :'--- 09
  152. 10295 DATA "       ★★★しばらくお待ちください....."
  153. 10300 DATA  2, 23,  6,  0,  0 :'--- 10
  154. 10305 DATA "この分析モードでは、指定した分析項目は無効です。分析項目を選択し直して下さい。"
  155. 10310 DATA  2, 23,  6,  0,  0 :'--- 11
  156. 10315 DATA "分析項目が指定されていません。 分析項目を選んでください。"
  157. 10320 DATA  2, 23,  7,  0,  0 :'--- 12
  158. 10325 DATA "分析条件ファイルを保存しますか? 保存する--[OK] 保存しない--[NG]"
  159. 10330 DATA  2, 23,  7,  0,  1 :'--- 13
  160. 10335 DATA "分析条件を確認して[実行]ボタンを押してください。"
  161. 10340 DATA  2, 23,  6,  0,  1 :'--- 14
  162. 10345 DATA "分析モードを選んでください。"
  163. 10350 DATA  2, 23,  6,  0,  1 :'--- 15
  164. 10355 DATA "分析開始年月の家計簿ファイルがありません。"
  165. 10360 DATA  2, 23,  6,  0,  1 :'--- 16
  166. 10365 DATA "分析終了年月の家計簿ファイルがありません。"
  167. 10370 DATA  2, 23,  4,  0,  1 :'--- 17
  168. 10375 DATA "★分析実行中!! しばらくお待ちください。"
  169. 10380 DATA  2, 23,  6,  0,  1 :'--- 18
  170. 10385 DATA "分析の結果該当するデータが有りませんでした。"
  171. 10390 DATA  2, 23,  7,  0,  1 :'--- 19
  172. 10395 DATA "分析終了! [▲前頁][▼次頁]で頁切替え。 [取消]で分析終了。"
  173. 10400 DATA  2, 23,  4,  0,  1 :'--- 20
  174. 10405 DATA "★統計演算処理実行中! しばらくお待ちください。"
  175. 10410 DATA  2, 23,  7,  0,  1 :'--- 21
  176. 10415 DATA "マウスで内容を見たい日付のグラフ(白い点)をクリックしてください。 終了:[取消]"
  177. 10990 '
  178. 11000 *SNDMSG:'  SAVE "SNDMSG.SUB",A
  179. 11005  IF SNDMF=0 THEN RETURN
  180. 11010  '・・・・・・・・・・・・・・・・・  サウンドメッセージ実行サブルーチン  1989.02.04
  181. 11020  '                   入力=MESN (メッセージNo.)
  182. 11030  '
  183. 11070  IF MESN>36 THEN *RETURN_SNDMSG
  184. 11080  RESTORE *MSGNAM
  185. 11090  FOR IMSG=1 TO MESN
  186. 11100    READ MSGD$
  187. 11110  NEXT IMSG
  188. 11120  MSGFN$=SNDDRV$+"\"+MSGD$+"_F.SND"
  189. 11130  LOAD@ MSGFN$,MSGD%
  190. 11140  PCMPLAY MSGD%
  191. 11150 *RETURN_SNDMSG :WAIT SWAIT:RETURN
  192. 11160 *MSGNAM :'////////// .SND File Name Data
  193. 11170 DATA "OHA1"   :'  1 おはよう
  194. 11180 DATA "KONN"   :'  2 こんにちわ
  195. 11190 DATA "KONBAN" :'  3 こんばんわ
  196. 11200 DATA "GOKRO1" :'  4 ごくろうさん
  197. 11210 DATA "GOKRO2" :'  5 ごくろうさま
  198. 11220 DATA "OTUKA"  :'  6 お疲れさま
  199. 11230 DATA "OMATA"  :'  7 おまたせ
  200. 11240 DATA "ARIGA2" :'  8 ありがとう
  201. 11250 DATA "RUNRUN" :'  9 るんるん
  202. 11260 DATA "DAMEDE" :' 10 だめでしょう
  203. 11270 DATA "IIDE1"  :' 11 いいですか
  204. 11280 DATA "NANISI" :' 12 なにしてるの
  205. 11290 DATA "DAMEDA" :' 13 だめだめ
  206. 11300 DATA "OWARI"  :' 14 終わりました
  207. 11310 DATA "SIBA"   :' 15 しばらくお待ち下さい
  208. 11320 DATA "YOROSI" :' 16 よろしいですか
  209. 11330 DATA "TYANTO" :' 17 ちゃんとしなさい
  210. 11340 DATA "ERANDE" :' 18 選んでください
  211. 11350 DATA "KAKNIN" :' 19 確認して下さい
  212. 11360 DATA "NYURYO" :' 20 入力してください
  213. 11370 DATA "IRA"    :' 21 いらっしゃいませ 
  214. 11380 DATA "OYASUM" :' 22 おやすみ
  215. 11390 DATA "ARIGA3" :' 23 ありがとうございました
  216. 11400 DATA "TYOTO"  :' 24 ちょっと待って
  217. 11410 DATA "DAMEYO" :' 25 駄目よ
  218. 11420 DATA "YAMETE" :' 26 やめて
  219. 11430 DATA "TIGAU"  :' 27 ちがうよ
  220. 11440 DATA "PINPON" :' 28 ぴんぽーん
  221. 11450 DATA "BUU"    :' 29 ぶー
  222. 11460 DATA "MOUII"  :' 30 もういいよう  
  223. 11470 DATA "DEKITA" :' 31 できたよー
  224. 11480 DATA "IIDE2"  :' 32 いいですか(2)
  225. 11490 DATA "YOSI"   :' 33 よしなさい
  226. 11500 DATA "OYOSI"  :' 34 およしなさい
  227. 11510 DATA "YAMENA" :' 35 やめなさい
  228. 11520 DATA "GOMEN"  :' 36 ごめん
  229. 11530 '                                    
  230. 12000 '////////// 年月日入力 & 曜日表示
  231. 12010 '                    
  232. 12015 *週分析E
  233. 12020 DATA "SUN",2,"MON",0,"TUE",0,"WED",0,"THU",0,"FRI",0,"SAT",1
  234. 12025 GOSUB *WEEKN:RESTORE 12020:FOR IW=0 TO WK:READ WKM$,CW:NEXT IW
  235. 12030 RETURN
  236. 12045 *週分析
  237. 12050 DATA "日",2,"月",0,"火",0,"水",0,"木",0,"金",0,"土",5
  238. 12060 GOSUB *WEEKN:RESTORE 12050:FOR IW=0 TO WK:READ WKM$,CW:NEXT IW
  239. 12080 RETURN
  240. 12090 '
  241. 12450 *WEEKN :'////////// 週NO.分析
  242. 12460 U=0    :'・・・・・・・・・・・・・・・・・・・・・・・・ Input; YR MN   Output; WK DN
  243. 12470 IF YR/4-INT(YR/4)=0 THEN U=1
  244. 12480 DATA 31,28,31,30,31,30,31,31,30,31,30,31
  245. 12490 DATA 31,29,31,30,31,30,31,31,30,31,30,31
  246. 12500 IF U=0 THEN RESTORE 12480 ELSE RESTORE 12490
  247. 12505 IF MN=1 THEN MDN=0:MNDN=31:GOTO 12520
  248. 12510 MDN=0:FOR IWEKN=1 TO MN-1:READ DN:MDN=MDN+DN:NEXT IWEKN
  249. 12515 READ MNDN:'当月の日数
  250. 12520 YDN#=MDN+YR*365+INT((YR+3)/4)+5+DY-1
  251. 12530 WK=(YDN#/7-INT(YDN#/7))*7
  252. 12540 RETURN
  253. 15000 '
  254. 15010 '  SAVE"TCLOCK.sub"             :'   組み込み型 アナログ時計 V1.1
  255. 15020 '                                       1991.05 T.KOMURA 
  256. 15030 '--------------------------------------------------------------------
  257. 15040 '
  258. 15220 *時計表示:'///////////////////////////////////
  259. 15230 XCLK0=572:YCLK0=22:CLKR=16:PI=3.1415!
  260. 15240 TIMEX$=TIME$:IF DATE$<>DATX$ THEN GOSUB *本日の日付
  261. 15250 TSC$=MID$(TIMEX$,7,2):SCR=2*PI*(VAL(TSC$)/60)
  262. 15260 TMN$=MID$(TIMEX$,4,2):MNR=2*PI*(VAL(TMN$)/60)
  263. 15270 THR$=LEFT$(TIMEX$,2) :HRR=2*PI*((VAL(THR$)*60+VAL(TMN$))/720)
  264. 15280 GOSUB *短針表示
  265. 15290 GOSUB *長針表示
  266. 15300 GOSUB *秒針表示
  267. 15310 CLOCKINIT=1:DATX$=DATE$
  268. 15320 RETURN
  269. 15330 '
  270. 15340 *短針表示
  271. 15350 XHD1=XCLK0+(CLKR-8)*SIN(HRR):XHD2=XCLK0
  272. 15360 YHD1=YCLK0-(CLKR-8)*COS(HRR):YHD2=YCLK0
  273. 15370 IF CLOCKINIT=0 THEN 15400
  274. 15380 IF SCR<>0 THEN 15420
  275. 15390 LINE(XHD1X,YHD1X)-(XHD2X,YHD2X),XOR,6
  276. 15400 LINE(XHD1 ,YHD1 )-(XHD2 ,YHD2 ),XOR,6
  277. 15410 XHD1X=XHD1:YHD1X=YHD1:XHD2X=XHD2:YHD2X=YHD2
  278. 15420 RETURN
  279. 15430 *長針表示
  280. 15440 XMD1=XCLK0+(CLKR-2)*SIN(MNR):XMD2=XCLK0
  281. 15450 YMD1=YCLK0-(CLKR-2)*COS(MNR):YMD2=YCLK0
  282. 15460 IF CLOCKINIT=0 THEN 15490
  283. 15470 IF SCR<>0 THEN 15510
  284. 15480 LINE(XMD1X,YMD1X)-(XMD2X,YMD2X),XOR,7
  285. 15490 LINE(XMD1 ,YMD1 )-(XMD2 ,YMD2 ),XOR,7
  286. 15500 XMD1X=XMD1:YMD1X=YMD1:XMD2X=XMD2:YMD2X=YMD2
  287. 15510 RETURN
  288. 15520 *秒針表示
  289. 15530 XSD1=XCLK0+(CLKR)*SIN(SCR):XSD2=XCLK0:'+(CLKR-10)*SIN(SCR)
  290. 15540 YSD1=YCLK0-(CLKR)*COS(SCR):YSD2=YCLK0:'-(CLKR-10)*COS(SCR)
  291. 15550 IF CLOCKINIT=0 THEN 15570
  292. 15560 LINE(XSD1X,YSD1X)-(XSD2X,YSD2X),XOR,4
  293. 15570 LINE(XSD1 ,YSD1 )-(XSD2 ,YSD2 ),XOR,4
  294. 15580 XSD1X=XSD1:YSD1X=YSD1:XSD2X=XSD2:YSD2X=YSD2
  295. 15590 RETURN
  296. 16000 '
  297. 19000 '
  298. 19010 '//////////////////////////////////////////////////////////////
  299. 19020 *ERROR:'      エラー処理サブルーチン V1.10   1990.11.08 T.Komura
  300. 19030 '             
  301. 19040 '
  302. 19050 IF ERR=53 THEN *IOERR
  303. 19060 IF ERR=63 THEN *FILNOF
  304. 19070 IF ERR=67 THEN *DSKFUL
  305. 19080 IF ERR=71 THEN *DSKUNF 
  306. 19090 IF ERR=72 THEN *DSKOFF
  307. 19100 IF ERR=73 THEN *DSKWP
  308. 19110 ERMES$="エラー行:"+STR$(ERL)+" エラー番号:"+STR$(ERR)+" 発生"
  309. 19120 GOSUB *ERMSG
  310. 19130 STOP
  311. 19140 '////////// エラー処理
  312. 19150 *IOERR
  313. 19160 ERMES$="プリンターが準備されていません。 プリンターをセット後、"
  314. 19170 GOSUB *ERMSG:RESUME
  315. 19180 *DSKFUL
  316. 19190 ERMES$="ディスクが満杯です。 交換後、"
  317. 19200 GOSUB *ERMSG:RESUME
  318. 19210 *DSKUNF
  319. 19220 ERMES$="このディスクは使用出来ません。処理を中断します。 "
  320. 19230 GOSUB *ERMSG:RESUME
  321. 19240 *DSKOFF
  322. 19250 ERMES$="ディスク装置が準備されていません。ディスクをセット後、"
  323. 19260 GOSUB *ERMSG:RESUME
  324. 19270 *DSKWP
  325. 19280 ERMES$="ディスクが書き込み禁止になっています。解除後、"
  326. 19290 GOSUB *ERMSG:RESUME
  327. 19300 *FILNOF
  328. 19310 ERMES$="ファイルが見つかりません。ディスクを交換後、"
  329. 19320 GOSUB *ERMSG:RESUME
  330. 19330 '
  331. 19340 *ERMSG:'////////// エラーメッセージ
  332. 19345 XX=POS(0):YY=CSRLIN
  333. 19350 LOCATE 2,23:COLOR 2,0
  334. 19355 PRINT SPACE$(77);
  335. 19359 LOCATE 2,23:COLOR 2,0
  336. 19360 PRINT ERMES$;"[実行]キーを押してね!";
  337. 19370 COLOR 7,0:MESN=19:GOSUB *SNDMSG
  338. 19380 ERRA$=INKEY$:IF ERRA$="" THEN 19380
  339. 19390 IF ERRA$<>CHR$(&H0D) THEN 19380
  340. 19400 LOCATE 3,23:COLOR 6,0
  341. 19410 PRINT "エラー処理を終わります。";SPACE$(52);
  342. 19420 LOCATE XX,YY:RETURN
  343. 19430 '
  344. 19440 '
  345. 19450 '
  346. 20000 '------------------------------------------------------------------
  347. 20010 ' CUSTOM SUB ROUTINE FOR "HKANLY.BAS"
  348. 20020 '------------------------------------------------------------------
  349. 20100 *表紙表示
  350. 20140  LOAD@ TIFDRV$+"\HKANLY.TIF",(0,0)
  351. 20145  INTERVAL ON
  352. 20150  GET@A(88,90)-(215,172),SUBW#
  353. 20155  GET@A(10,90)-(628,424),ANLW#
  354. 20160  RETURN
  355. 20190 '
  356. 20200 *本日の日付
  357. 20210  TY$=LEFT$(DATE$,2) :TY=VAL(TY$)
  358. 20212  IF TY<90 THEN TY=TY+2000 ELSE TY=TY+1900
  359. 20214  TY$=RIGHT$(STR$(TY),4)
  360. 20220  TM$=MID$(DATE$,4,2):TM=VAL(TM$)
  361. 20230  TD$=RIGHT$(DATE$,2):TD=VAL(TD$)
  362. 20250  YR=TY:MN=TM:DY=TD:GOSUB *週分析:IF CW=0 THEN CW=7
  363. 20260  TYMD$=TY$+"年"+TM$+"月"+TD$+"日"+"   曜日"
  364. 20265  COLOR 7,0:LOCATE 46,1:PRINT TYMD$
  365. 20270  COLOR CW:LOCATE 61,1:PRINT WKM$
  366. 20280  RETURN
  367. 20290 '
  368. 20300 *分析年月表示
  369. 20310  SRYR$=RIGHT$(STR$(SRYR),4)
  370. 20315  NBN=4:NBA$=SRYR$:GOSUB *数字漢字変換:KYR$=NBK$
  371. 20320  SRMN$=RIGHT$(STR$(100+SRMN),2)
  372. 20325  NBN=2:NBA$=SRMN$:GOSUB *数字漢字変換:KMN$=NBK$
  373. 20350  DYMD$=KYR$+SPACE$(9)+KMN$
  374. 20360  COLOR 7,0:LOCATE 39,9+(ANLIN-1)*2:PRINT DYMD$;
  375. 20380  RETURN
  376. 20390 '
  377. 20400 *分析モード表示
  378. 20410  LOCATE 12,3:COLOR SMODC
  379. 20420  PRINT SMODE$(SMODE);
  380. 20430  ANLC$="\ANLC"+RIGHT$(STR$(SMODE+100),2)+".TIF"
  381. 20440  DRV$=LEFT$(TIFDRV$,2)
  382. 20445  IF LEN(TIFDRV$)=3 THEN DRV$=LEFT$(TIFDRV$,2):PATH$="":GOTO 20455
  383. 20450  PATH$=RIGHT$(TIFDRV$,LEN(TIFDRV$)-2)
  384. 20455  FLN$=DRV$+PATH$+ANLC$
  385. 20460  IF ANLF=1 THEN 20470
  386. 20465  LOAD@ FLN$,(88,90)
  387. 20470  RETURN
  388. 20480 '
  389. 20500 *分析結果画面消去
  390. 20510  FOR II=5 TO 21
  391. 20520    LOCATE 0,II:COLOR 7:PRINT SPACE$(79);
  392. 20530  NEXT II
  393. 20540  PUT@A(10,90)-(628,424),ANLW#
  394. 20550  RETURN
  395. 20590 '
  396. 20600 *年月変更
  397. 20610  MN=MN+MDEF
  398. 20620  IF MN<1 THEN MN=12+MN:YR=YR-1
  399. 20630  IF MN>12 THEN MN=MN-12:YR=YR+1
  400. 20640  YR=YR+YDEF
  401. 20650  IF YR<0 THEN YR=10000+YR
  402. 20660  IF YR>9999 THEN YR=YR-10000
  403. 20670  MN$=RIGHT$(STR$(100+MN),2)
  404. 20680  YR$=RIGHT$(STR$(10000+YR),4)
  405. 20690  RETURN
  406. 20695 '
  407. 20700 *分析条件枠表示
  408. 20705  DEF FONT "システム   12ドット"
  409. 20710  GET@A(208,125)-(557,333),ANLS#
  410. 20720  LOAD@ TIFDRV$+"\HKANLS.TIF",(208,125)
  411. 20722  FOR II=1 TO 15:IF II>3 AND II<8 THEN C=1 ELSE C=0
  412. 20724    X=318+46*INT((II-1)/3):Y=249+17*((II-1) MOD 3)
  413. 20726    SYMBOL(X,Y),CFI$(II),.75!,.75!,C
  414. 20728  NEXT II
  415. 20730  FOR II=1 TO 3
  416. 20732    IF SMOPT(SMODE,II)=0 THEN 20738 
  417. 20734    LOCATE 28,9+(II-1)*2:COLOR 3
  418. 20736    PRINT "●";
  419. 20738  NEXT II
  420. 20739  DEF FONT "システム   16ドット"
  421. 20740  RETURN
  422. 20750 *分析条件枠消去
  423. 20760  FOR II=1 TO 5
  424. 20762    LOCATE 28,9+II-1:PRINT SPACE$(40);
  425. 20764  NEXT II
  426. 20770  PUT@A(208,125)-(557,333),ANLS#
  427. 20785  RETURN
  428. 20790 '
  429. 20800 *分析条件読み込み
  430. 20805  MESN=4:GOSUB *MESDSP
  431. 20810  GOSUB *ANLSGET
  432. 20820  SRYR=SR1YR:SRMN=SR1MN:ANLIN=1:GOSUB *分析年月表示
  433. 20825  YRS=SRYR:MNS=SRMN
  434. 20830  SRYR=SR2YR:SRMN=SR2MN:ANLIN=2:GOSUB *分析年月表示
  435. 20835  YRE=SRYR:MNE=SRMN
  436. 20870  SX8=0:SX8X=SX8:SX$(8)=SPACE$(2):SITM=0
  437. 20890  RETURN
  438. 20895 '
  439. 20900 *分析条件保存
  440. 20905  MESN=5:GOSUB *MESDSP
  441. 20910  GOSUB *ANLSPUT
  442. 20920  RETURN
  443. 20930 '
  444. 21000 *分析条件設定
  445. 21010  GOSUB *分析条件枠表示
  446. 21020  GOSUB *分析条件読み込み
  447. 21030  MESN=3:GOSUB *MESDSP:MESN=20:GOSUB *SNDMSG
  448. 21040  G=2:GOSUB *マウスボタン選択
  449. 21050  IF SWNO>10 THEN *ANLS項目選択
  450. 21060  ON SWNO GOTO *SI01,*SI02,*SI03,*SI04,*SI05,*SI06,*SI07,*SI08,*SI09,*SI10
  451. 21070 '//////////////////////////////////////////////////////////////
  452. 21080  *SI03:YDEF=+1:MDEF= 0:GOTO 21120
  453. 21090  *SI04:YDEF=-1:MDEF= 0:GOTO 21120
  454. 21100  *SI05:YDEF= 0:MDEF=+1:GOTO 21120
  455. 21110  *SI06:YDEF= 0:MDEF=-1:GOTO 21120
  456. 21120   G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  457. 21130   ANLIN=1:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21170
  458. 21140   YR=SR1YR:MN=SR1MN:GOSUB *年月変更:SR1YR=YR:SR1MN=MN
  459. 21150   SX$(1)=YR$:SX$(2)=MN$:YRS=YR:MNS=MN
  460. 21160   SRYR=SR1YR:SRMN=SR1MN:GOSUB *分析年月表示
  461. 21170   G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  462. 21180   GOTO 21040
  463. 21190  *SI07:YDEF=+1:MDEF= 0:GOTO 21230
  464. 21200  *SI08:YDEF=-1:MDEF= 0:GOTO 21230
  465. 21210  *SI09:YDEF= 0:MDEF=+1:GOTO 21230
  466. 21220  *SI10:YDEF= 0:MDEF=-1:GOTO 21230
  467. 21230   G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  468. 21240   ANLIN=2:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21280
  469. 21250   YR=SR2YR:MN=SR2MN:GOSUB *年月変更:SR2YR=YR:SR2MN=MN
  470. 21260   SX$(3)=YR$:SX$(4)=MN$:YRE=YR:MNE=MN
  471. 21270   SRYR=SR2YR:SRMN=SR2MN:GOSUB *分析年月表示
  472. 21280   G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  473. 21290   GOTO 21040
  474. 21300  *ANLS項目選択
  475. 21310   ANLIN=3:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21370
  476. 21320   SX8=SWNO:IF SX8X=0 THEN 21340
  477. 21330   G=2:B=SX8X:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  478. 21340   G=2:B=SX8 :BST(G,B)=1:GOSUB *ボタンON_OFF表示
  479. 21350   SX8X=SX8:SITM=0
  480. 21360   SX$(8)=RIGHT$(STR$(SX8-10),2):SITM=VAL(SX$(8))
  481. 21370   GOTO 21040
  482. 21380  *SELERR
  483. 21390   MESN=6:GOSUB *MESDSP:MESN=13:GOSUB *SNDMSG
  484. 21400   FOR II=1 TO 5000:NEXT II
  485. 21410   MESN=3:GOSUB *MESDSP
  486. 21420   RETURN
  487. 21430  *SI01'
  488. 21440   G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  489. 21450   GOSUB *分析条件合理性判定
  490. 21460   IF ANLCDF=0 THEN *SIRETRY
  491. 21470   GOTO *SIEND
  492. 21540  *SIRETRY
  493. 21550   G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  494. 21560   GOTO 21040
  495. 21570  *SI02'
  496. 21580   G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  497. 21590   ANLCAN=1
  498. 21620   GOTO 21660
  499. 21630  *SIEND
  500. 21640   ANLCAN=0
  501. 21650   GOSUB *分析条件保存
  502. 21660   GOSUB *分析条件枠消去
  503. 21670   RETURN
  504. 21730 '
  505. 21740 *分析条件表示
  506. 21742  PUT@A(88,90)-(215,172),SUBW#
  507. 21745  IF SMOPT(SMODE,3)=0 THEN 21760
  508. 21748  LINE(88,92)-(215,108),PSET,1,BF
  509. 21750  SYMBOL(90,94),"分析項目:",.8!,.8!,7,,,&H01+&H04,2
  510. 21755  SYMBOL(158,94),ITEM$(SITM),1,.8!,3,,,&H01+&H04,2
  511. 21760  IF SMOPT(SMODE,2)=0 THEN 21780
  512. 21770  ANLYM$=SX$(1)+"."+SX$(2)+" テ "+SX$(3)+"."+SX$(4):GOTO 21790
  513. 21780  ANLYM$=SX$(1)+"."+SX$(2)+" テ "+SX$(1)+"."+SX$(2)
  514. 21790  LOCATE 47,3:COLOR 4:PRINT ANLYM$;
  515. 21800  RETURN
  516. 21810 '
  517. 21820 *分析条件消去
  518. 21825  PUT@A(88,90)-(215,172),SUBW#
  519. 21830  LOCATE 47,3:PRINT SPACE$(30)
  520. 21840  RETURN
  521. 21850 '
  522. 21860 *分析年月日更新
  523. 21870  'IF SMODE=4 THEN ANLCNT=0:RETURN
  524. 21880  YR=YRM:MN=MNM:YDEF=0:MDEF=+1
  525. 21890  GOSUB *年月変更
  526. 21900  IF (YR*12+MN)<=(YRE*12+MNE) THEN 21920
  527. 21910  ANLCNT=0:RETURN
  528. 21920  IYM$=YR$+MN$
  529. 21930  ANLCNT=1
  530. 21940  RETURN
  531. 21950 '
  532. 22000 *AN01:'//////////////////// [月間合計額推移]
  533. 22010  X0=88:Y0=128:XP=44:YP=12
  534. 22011  MESH$=CHR$(&H70,&H70,&H70,&H70,&H07,&H07,&H07,&H07)
  535. 22021  FOR II=1 TO 23 STEP 2
  536. 22022    LINE(X0,Y0+YP*II)-(X0+XP*11,Y0+YP*(II+1)+1),PSET,0,BF,MESH$
  537. 22023  NEXT II
  538. 22024  FOR II=1 TO 10
  539. 22025    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*24),PSET,5,,&HAAAA
  540. 22026  NEXT II
  541. 22027  LINE(X0,Y0)-(X0+XP*11,Y0),PSET,5
  542. 22028  LINE(X0,Y0)-(X0,Y0+YP*24),PSET,5
  543. 22030  SYMBOL(40,116),"年.月",1,.6!,5
  544. 22035  SYMBOL(578,116),"[\]",1,.6!,5
  545. 22100 '-------------------- データ読み込み
  546. 22105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  547. 22110  SCN=1:GOSUB *グラフデータ初期化
  548. 22120  IYM$=YRS$+MNS$:GDN=1
  549. 22125  GOSUB *ITM変換
  550. 22130  GOSUB *統計データ読みだし
  551. 22132  GDYM$=YRM$+"."+MNM$
  552. 22135  SYMBOL(X0-68,Y0+YP*(GDN-1)+2),GDYM$,1,.6!,7,,,,1
  553. 22140  IF FIDX=0 THEN 22160
  554. 22150    GDT#(1,GDN)=MX#(GITM)
  555. 22155    TGDT#=TGDT#+GDT#(1,GDN)
  556. 22160  GOSUB *分析年月日更新
  557. 22170  IF ANLCNT=0 THEN 22200
  558. 22180  GDN=GDN+1:GOTO 22130
  559. 22200 '-------------------- グラフ作成
  560. 22210  GDMAX=GDN
  561. 22220  GOSUB *スケール検出
  562. 22230  FOR II=0 TO 10 STEP 2
  563. 22232    SCAL$=LEFT$(STR$((SCAL#(1)/10)*II)+SPACE$(8),8)
  564. 22234    SYMBOL(X0+XP*II-6,Y0-10),SCAL$,.6!,.6!,7
  565. 22236  NEXT II
  566. 22238  MESH$=MESH$(13)
  567. 22240  FOR GDN=1 TO GDMAX
  568. 22250    XG=X0+(GDT#(1,GDN)/SCAL#(1))*XP*10
  569. 22260    LINE(X0,Y0+YP*GDN-10)-(XG,Y0+YP*GDN-1),PSET,0,BF,MESH$
  570. 22270    SYMBOL(XG,Y0+YP*GDN-10),STR$(GDT#(1,GDN)),.8!,.6!,6,,,&H02
  571. 22280  NEXT GDN
  572. 22290  LINE(216,92)-(364,108),PSET,7,BF
  573. 22300  SYMBOL(222,94),"総合計:\"+STR$(TGDT#),1,.8!,0,,,&H01
  574. 22470  GOSUB *画面フラッシュ
  575. 22480 RETURN
  576. 22490 '
  577. 22500 *AN02:'//////////////////// [月間合計額累積]
  578. 22510  X0=88:Y0=372:XP=20:YP=-24
  579. 22520  LINE(X0,Y0)-(X0+XP*24,Y0),PSET,5
  580. 22521  LINE(X0-12,Y0+8)-(X0+XP*24-12,Y0+8),PSET,5
  581. 22525  LINE(X0,Y0)-(X0,Y0+YP*10),PSET,5
  582. 22526  LINE(X0-12,Y0+8)-(X0-12,Y0+YP*10+8),PSET,5
  583. 22530  FOR II=1 TO 24
  584. 22532    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
  585. 22533    LINE(X0+XP*II,Y0)-(X0+XP*II-12,Y0+8),PSET,5
  586. 22534  NEXT II
  587. 22536  FOR II=0 TO 10
  588. 22538    LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,5,,&HAAAA
  589. 22539    LINE(X0,Y0+YP*II)-(X0-12,Y0+YP*II+8),PSET,5
  590. 22540  NEXT II
  591. 22550  SYMBOL(24,108),"累積額[\]",.8!,.6!,7
  592. 22555  SYMBOL(40,96),"月額[\]",.8!,.6!,5
  593. 22560  SYMBOL(576,372),"年.月",.8!,.6!,5
  594. 22600 '-------------------- データ読み込み
  595. 22605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  596. 22610  SCN=2:GOSUB *グラフデータ初期化
  597. 22620  IYM$=YRS$+MNS$:GDN=1
  598. 22625  GOSUB *ITM変換
  599. 22630  GOSUB *統計データ読みだし
  600. 22632  GDYM$=YRM$+"."+MNM$
  601. 22633  XS=X0+XP*(GDN-1)-16:YS=Y0+((GDN-1) MOD 3)*12+10
  602. 22635  SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
  603. 22640  IF FIDX=0 THEN 22660
  604. 22650    GDT#(1,GDN)=MX#(GITM)
  605. 22651    GDT#(2,GDN)=GDT#(2,GDN-1)+MX#(GITM)
  606. 22655    TGDT#=TGDT#+GDT#(1,GDN)
  607. 22660  GOSUB *分析年月日更新
  608. 22670  IF ANLCNT=0 THEN 22700
  609. 22680  GDN=GDN+1:GOTO 22630
  610. 22700 '-------------------- グラフ作成
  611. 22710  GDMAX=GDN
  612. 22720  GOSUB *スケール検出
  613. 22730  FOR II=0 TO 10 STEP 2
  614. 22732    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*II),8)
  615. 22733    SCAL$(2)=RIGHT$(SPACE$(8)+STR$((SCAL#(2)/10)*II),8)
  616. 22734    SYMBOL(X0-54,Y0-10+YP*II),SCAL$(1),.6!,.6!,5
  617. 22735    SYMBOL(X0-66,Y0+YP*II),SCAL$(2),.6!,.6!,7
  618. 22736  NEXT II
  619. 22738  MESH1$=MESH$(13)
  620. 22739  MESH2$=MESH$(3)
  621. 22740  FOR GDN=1 TO GDMAX
  622. 22750    YG=Y0+(GDT#(1,GDN)/SCAL#(1))*YP*10
  623. 22755    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG),PSET,5,BF
  624. 22760    LINE(X0+XP*GDN-19,Y0+2)-(X0+XP*GDN-7,YG+2),PSET,0,BF,MESH1$
  625. 22765    YG=Y0+(GDT#(2,GDN)/SCAL#(2))*YP*10
  626. 22770    X1=X0+XP*(GDN-1)- 6:Y1=YG+4
  627. 22771    X2=X0+XP*(GDN  )- 6:Y2=YG+4
  628. 22772    X3=X0+XP*(GDN  )-12:Y3=YG+8
  629. 22773    X4=X0+XP*(GDN-1)-12:Y4=YG+8
  630. 22774    CONNECT(X1,Y1)-(X2,Y2)-(X3,Y3)-(X4,Y4)-(X1,Y1),7,PSET,F,MESH2$
  631. 22775    LINE(X2,Y2)-(X2,Y0+4),PSET,7
  632. 22776    LINE(X3,Y3)-(X3,Y0+8),PSET,7
  633. 22777    LINE(X4,Y4)-(X4,Y0+8),PSET,7
  634. 22780  NEXT GDN
  635. 22790  LINE(216,92)-(364,108),PSET,7,BF
  636. 22900  SYMBOL(222,94),"総合計:\"+STR$(TGDT#),1,.8!,0,,,&H01
  637. 22970 GOSUB *画面フラッシュ
  638. 22980 RETURN
  639. 22990 '
  640. 23000 *AN03:'//////////////////// [日別項目別変動]
  641. 23010  X0=52:Y0=262:XP=3:YP=-10:YO=128
  642. 23011  DATA 100000,100000,100000, 10000, 10000
  643. 23012  DATA   2000, 10000, 20000, 10000, 10000
  644. 23013  DATA  10000, 10000, 10000, 10000, 50000
  645. 23015  RESTORE 23011:FOR II=2 TO SITM:READ SCAL#(1):NEXT II
  646. 23020  FOR II=0 TO 1:Y0X=Y0+YO*II
  647. 23022   LINE(X0,Y0X)-(X0+XP*31*6,Y0X),PSET,5
  648. 23024   LINE(X0,Y0X)-(X0,Y0X+YP*10),PSET,5
  649. 23030   FOR JJ=1 TO 10
  650. 23032    LINE(X0,Y0+YO*II+YP*JJ)-(X0+XP*31*6,Y0+YO*II+YP*JJ),PSET,5,,&HAAAA
  651. 23034   NEXT JJ
  652. 23040   FOR JJ=0 TO 31*6 STEP 31
  653. 23041    LINE(X0+XP*JJ,Y0X)-(X0+XP*JJ,Y0X+YP*10),PSET,5
  654. 23042    LINE(X0+XP*(JJ+10),Y0X)-(X0+XP*(JJ+10),Y0X+YP*10),PSET,5,,&HAAAA
  655. 23043    LINE(X0+XP*(JJ+20),Y0X)-(X0+XP*(JJ+20),Y0X+YP*10),PSET,5,,&HAAAA
  656. 23045   NEXT JJ
  657. 23050   FOR JJ=0 TO 10 STEP 2
  658. 23052    SCAL$=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*JJ),8)
  659. 23054    SYMBOL(X0-42,Y0X+YP*JJ-6),SCAL$,.6!,.6!,7
  660. 23056   NEXT JJ
  661. 23058  NEXT II
  662. 23060  LINE(217,92)-(308,108),PSET,7,BF
  663. 23061  LINE(310,92)-(614,108),PSET,7,BF
  664. 23062  'SYMBOL(222,94),"\ 00000000  01234567890123456789012345678901",1,.8!,0,,,&H01
  665. 23063  LINE(88,110)-(614,126),PSET,5,BF
  666. 23064  LINE(20,92)-(86,126),PSET,7,BF
  667. 23066  SYMBOL(96,112),"出来事:",.9!,.8!,0,,,&H01,4
  668. 23067  'SYMBOL(26,94 ),"1992.07",.9!,.8!,0,,,&H01,1
  669. 23068  'SYMBOL(26,112),"25[wed]",.9!,.8!,0,,,&H01,1
  670. 23100 '-------------------- データ読み込み
  671. 23105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  672. 23110  FOR II=1 TO 366:GDYY=0:GDYM$="":NEXT II
  673. 23120  IYM$=YRS$+MNS$:GDN=1
  674. 23125  GOSUB *ITM変換
  675. 23130  GOSUB *HKISRC 
  676. 23132  GDYM$=YRM$+"."+MNM$
  677. 23133  XS=X0+((GDN-1) MOD (31*6))*XP+8:YS=Y0+INT((GDN-1)/(31*6))*YO+4
  678. 23135  SYMBOL(XS,YS),GDYM$,1,.8!,6,,,&H01,1
  679. 23140  IF FIDX=0 THEN 23160
  680. 23141    FOR RDY=1 TO 31
  681. 23145      TCALF=0:GOSUB *HKDGET
  682. 23150      GDYY(GDN)=DYN#(GITM)
  683. 23151      GDYM$(GDN)=YRM$+MNM$+RIGHT$(STR$(100+RDY),2)+DRM$(GITM)
  684. 23152      GDYE$(GDN)=DEV$
  685. 23153      GOSUB *AN03グラフ作成
  686. 23156      GDN=GDN+1
  687. 23158    NEXT RDY
  688. 23160  GOSUB *分析年月日更新
  689. 23170  IF ANLCNT=0 THEN 23200
  690. 23180  GOTO 23130
  691. 23200 '-------------------- データ読み取り
  692. 23202  GOSUB *画面フラッシュ
  693. 23205  GDN=GDN-1:'TBS=1:GOSUB *AN03グラフ読み取り
  694. 23210  MESN=21:GOSUB *MESDSP:MESN=18:GOSUB *SNDMSG
  695. 23220  SWPASS=1:G=1:GOSUB *マウスボタン選択
  696. 23230  IF SWNO=5 THEN *AN03END
  697. 23240  IF TBS=0 THEN 23220
  698. 23242  IF TBS>GDN THEN 23220
  699. 23244  GOSUB *AN03グラフ読み取り
  700. 23246  GOTO 23220
  701. 23250 *AN03グラフ読み取り
  702. 23251  LINE(217,92)-(308,108),PSET,7,BF
  703. 23252  LINE(310,92)-(614,108),PSET,7,BF
  704. 23253  LINE(157,110)-(614,126),PSET,5,BF
  705. 23254  LINE(20,92)-(86,126),PSET,7,BF
  706. 23260  YRM$=MID$(GDYM$(TBS),1,4):YR=VAL(YRM$)
  707. 23261  MNM$=MID$(GDYM$(TBS),5,2):MN=VAL(MNM$)
  708. 23262  DYM$=MID$(GDYM$(TBS),7,2):DY=VAL(DYM$)
  709. 23263  RMM$=MID$(GDYM$(TBS),9,32):GOSUB *週分析E
  710. 23264  SYMBOL(26,96),YRM$+"."+MNM$,.9!,.8!,0,,,&H01,1
  711. 23265  SYMBOL(26,112),DYM$+"[   ]",.9!,.8!,0,,,&H01,1
  712. 23266  SYMBOL(50,112),WKM$,.9!,.8!,CW,,,&H01,1
  713. 23270  SYMBOL(222,94),"\"+STR$(GDYY(TBS)),1,.8!,0,,,&H01,1
  714. 23271  SYMBOL(316,94),RMM$,1,.8!,0,,,&H02
  715. 23272  SYMBOL(160,112),GDYE$(TBS),.9!,.8!,0
  716. 23290  RETURN
  717. 23300 *AN03グラフ作成
  718. 23305  SCALOV=0:SCALZR=0
  719. 23310  XG=X0+((GDN-1) MOD (31*6))*XP
  720. 23320  IF GDYY(GDN)>SCAL#(1) THEN SCALOV=1:GOTO 23326
  721. 23322  IF GDYY(GDN)=0 THEN SCALZR=1
  722. 23325  YG=Y0+INT((GDN-1)/(31*6))*YO+YP*(GDYY(GDN)/SCAL#(1))*10:GOTO 23330
  723. 23326  YG=Y0+INT((GDN-1)/(31*6))*YO+YP*10 
  724. 23330  IF GDN=1 OR GDN=31*6+1 THEN 23341
  725. 23340  LINE(XGX+2,YGX)-(XGX+2,YG),PSET,4
  726. 23341  IF SCALZR=1 THEN 23343
  727. 23342  LINE(XG-1,YG-1)-(XG+1,YG+1),PSET,7,BF:GOTO 23345
  728. 23343  LINE(XG-1,YG)-(XG+1,YG),PSET,7,BF:GOTO 23350
  729. 23345  IF SCALOV=1 THEN LINE(XG+1,YG-2)-(XG-1,YG-1),PSET,2,B
  730. 23350  XGX=XG:YGX=YG
  731. 23360  RETURN
  732. 23400 *AN03END
  733. 23410  G=1:B=5:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  734. 23420  G=1:B=5:BST(G,B)=0:GOSUB *ボタンON_OFF表示
  735. 23480 RETURN
  736. 23490 '
  737. 23500 *AN04:'//////////////////// [月間収支推移  ]
  738. 23510  X0=88:Y0=240:XP=20:YP=-12
  739. 23520  LINE(X0,Y0)-(X0+XP*26,Y0),PSET,5
  740. 23525  LINE(X0,Y0-YP*10)-(X0,Y0+YP*10),PSET,5
  741. 23530  FOR II=1 TO 24
  742. 23532    LINE(X0+XP*II,Y0-YP*10)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
  743. 23534  NEXT II
  744. 23536  FOR II=-10 TO 10 STEP 1
  745. 23538    LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,5,,&HAAAA
  746. 23539    LINE(X0+XP*24.5!,Y0+YP*II)-(X0+XP*26,Y0+YP*II),PSET,5,,&HAAAA
  747. 23540  NEXT II
  748. 23550  SYMBOL(576,370),"TOTAL",.8!,.8!,5,,,&H01,1
  749. 23560  SYMBOL(22,124),"ヒ",1,1,5,,,&H01
  750. 23561  SYMBOL(24,150),"収",.8!,.8!,5,,,&H01
  751. 23562  SYMBOL(24,170),"入",.8!,.8!,5,,,&H01
  752. 23565  SYMBOL(24,300),"支",.8!,.8!,5,,,&H01
  753. 23566  SYMBOL(24,320),"出",.8!,.8!,5,,,&H01
  754. 23567  SYMBOL(22,346),"フ",1,1,5,,,&H01
  755. 23600 '-------------------- データ読み込み
  756. 23605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  757. 23610  SCN=3:GOSUB *グラフデータ初期化
  758. 23620  IYM$=YRS$+MNS$:GDN=1
  759. 23630  GOSUB *統計データ読みだし
  760. 23632  GDYM$=YRM$+"."+MNM$
  761. 23633  XS=X0+XP*(GDN-1)-16:YS=Y0-YP*10+((GDN-1) MOD 3)*12+10
  762. 23635  SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
  763. 23640  IF FIDX=0 THEN 23660
  764. 23650    GDT#(1,GDN)=MX#(16)
  765. 23651    GDT#(2,GDN)=MX#(17)
  766. 23655    GDT#(3,GDN)=MX#(16)-MX#(17)
  767. 23656    TGDT#=TGDT#+GDT#(3,GDN)
  768. 23660  GOSUB *分析年月日更新
  769. 23670  IF ANLCNT=0 THEN 23700
  770. 23680  GDN=GDN+1:GOTO 23630
  771. 23700 '-------------------- グラフ作成
  772. 23710  GDMAX=GDN
  773. 23720  GOSUB *スケール検出
  774. 23725  GOSUB *スケール検出2
  775. 23730  FOR II=-10 TO 10 STEP 2
  776. 23732    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
  777. 23735    SYMBOL(X0-46,Y0+YP*II-3),SCAL$(1),.6!,.6!,7
  778. 23736  NEXT II
  779. 23737  MESH1$=MESH$(10)
  780. 23738  MESH2$=MESH$(14)
  781. 23739  MESH3$=MESH$(15)
  782. 23745  FOR GDN=1 TO GDMAX
  783. 23750    YG1=Y0+(GDT#(1,GDN)/SMAXW#)*YP*10
  784. 23751    YG2=Y0-(GDT#(2,GDN)/SMAXW#)*YP*10
  785. 23752    YG3=Y0+(GDT#(3,GDN)/SMAXW#)*YP*10
  786. 23755    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG1),PSET,0,BF,MESH1$
  787. 23756    LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG2),PSET,0,BF,MESH2$
  788. 23758    LINE(X0+XP*GDN-XP,Y0)-(X0+XP*GDN  ,YG3),PSET,7,BF,MESH3$
  789. 23760  NEXT GDN
  790. 23770    YG=Y0+(TGDT#/SMAXW#)*YP*10
  791. 23772    LINE(X0+XP*26-XP-6,Y0)-(X0+XP*26-4,YG),PSET,7,BF,MESH3$
  792. 23800  LINE(430,96)-(620,112),PSET,7,BF
  793. 23810  IF TGDT#>=0 THEN 23815
  794. 23812  TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"-":GOTO 23820
  795. 23815  TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"+"
  796. 23820  SYMBOL(434,98),"収支合計: \"+TGDT$,1,.8!,0,,,&H01,1
  797. 23970  GOSUB *画面フラッシュ
  798. 23980  RETURN
  799. 23990 '
  800. 24000 *AN05:'//////////////////// [月間日累積推移]
  801. 24010  X0=88:Y0=392:XP=12:YP=-25
  802. 24020  LINE(X0,Y0)-(X0+XP*32,Y0),PSET,5
  803. 24022  LINE(X0,Y0)-(X0,Y0+YP*10),PSET,5
  804. 24030  FOR II=1 TO 31
  805. 24031    LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
  806. 24032    IF (II MOD 5)<>0 AND II<>1 THEN 24034
  807. 24033    SYMBOL(X0+XP*II-8,Y0+4),RIGHT$(STR$(100+II),2),1,.8!,6,,,&H01
  808. 24034  NEXT II
  809. 24035  FOR II=1 TO 10
  810. 24036    LINE(X0,Y0+YP*II)-(X0+XP*32,Y0+YP*II),PSET,5,,&HAAAA
  811. 24037  NEXT II
  812. 24050  SYMBOL(464,395),"[日]",1,.8!,5,,,&H01
  813. 24060  SYMBOL(50,119),"[\]",1,.8!,5,,,&H01
  814. 24100 '-------------------- データ読み込み
  815. 24105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  816. 24110  SCN=6:GOSUB *グラフデータ初期化
  817. 24120  IYM$=YRS$+MNS$:GDN=1
  818. 24125  GOSUB *ITM変換
  819. 24130  GOSUB *HKISRC 
  820. 24132  GOSUB *AN05年月表示
  821. 24140  IF FIDX=0 THEN 24160
  822. 24141    FOR RDY=1 TO 31
  823. 24145    GOSUB *HKDGET
  824. 24151      GDT#(GDN,RDY)=GDT#(GDN,RDY-1)+DYN#(GITM)
  825. 24158    NEXT RDY
  826. 24160  GOSUB *分析年月日更新
  827. 24170  IF ANLCNT=0 THEN 24200
  828. 24180  GDN=GDN+1:GOTO 24130
  829. 24200 '-------------------- グラフ作成
  830. 24210  GDMAX=GDN
  831. 24220  GOSUB *スケール検出
  832. 24225  GOSUB *スケール検出2
  833. 24230  FOR II=0 TO 10 
  834. 24232    SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
  835. 24235    SYMBOL(X0-46,Y0+YP*II-3),SCAL$(1),.6!,.6!,7
  836. 24236  NEXT II
  837. 24240  FOR GDN=1 TO GDMAX
  838. 24250    FOR RDY=1 TO 31
  839. 24252      X=X0+XP*RDY:Y=Y0+(GDT#(GDN,RDY)/SMAXW#)*YP*10
  840. 24260      IF RDY=1 THEN 24264
  841. 24262      LINE(XM,YM)-(X,Y),PSET,GDN
  842. 24264      LINE(X-1,Y-1)-(X+1,Y+1),PSET,GDN,BF
  843. 24266      XM=X:YM=Y
  844. 24270    NEXT RDY
  845. 24280  NEXT GDN
  846. 24285  GOSUB *画面フラッシュ
  847. 24290  RETURN
  848. 24295 '
  849. 24350 *AN05年月表示
  850. 24355  XS0=534:YS0=142:XSP=112:YSP=16
  851. 24360  GDYM$=YRM$+"."+MNM$
  852. 24365  XS=XS0:YS=YS0+(GDN-1)*YSP
  853. 24370  SYMBOL(XS,YS),GDYM$,1,.8!,7,,,&H01,1
  854. 24375  LINE(XS-30,YS+4)-(XS- 8,YS+4),PSET,GDN
  855. 24376  LINE(XS-31,YS+3)-(XS-29,YS+5),PSET,GDN,BF
  856. 24377  LINE(XS- 9,YS+3)-(XS- 7,YS+5),PSET,GDN,BF
  857. 24380  RETURN
  858. 24490 '
  859. 24500 *AN06:'//////////////////// [項目別比率分析]
  860. 24510  X0=18:Y0=96:XP=90:YP=16
  861. 24520  LOAD@ TIFDRV$+"\HKAN06.TIF",(X0-4,Y0-4)
  862. 24522  FOR II=1 TO 15:X=38
  863. 24523    IF II<4 THEN Y=114+16*(II-1):GOTO 24526
  864. 24524                 Y=114+16*II
  865. 24526    SYMBOL(X,Y),CFI$(II),.8!,.8!,0,,,,2
  866. 24528  NEXT II
  867. 24570  GOSUB *AN06項目表示
  868. 24600 '-------------------- データ読み込み
  869. 24605  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  870. 24610  SCN=1:GOSUB *グラフデータ初期化
  871. 24620  IYM$=YRS$+MNS$
  872. 24630  GOSUB *統計データ読みだし
  873. 24632  GDYM$=YRM$+"."+MNM$
  874. 24633  LOCATE 48,23:COLOR 4
  875. 24635  PRINT "Access File:";GDYM$;
  876. 24640  IF FIDX=0 THEN 24660
  877. 24650    FOR GDN=1 TO 18
  878. 24651      GDT#(1,GDN)=GDT#(1,GDN)+MX#(GDN)
  879. 24655    NEXT GDN
  880. 24660  GOSUB *分析年月日更新
  881. 24670  IF ANLCNT=0 THEN 24700
  882. 24680  GOTO 24630
  883. 24700 '-------------------- グラフ作成
  884. 24710  XC0=465:YC0=297:RC=120:XG0=345:YG0=128:XGP=240:YGP=32
  885. 24720  FOR GDN=1 TO 15
  886. 24722    IF GDN>3 THEN TGDT#=GDT#(1,17) ELSE TGDT#=GDT#(1,16)
  887. 24724    IF GDN>3 THEN YS=Y0+YP*(GDN+1) ELSE YS=Y0+YP*GDN
  888. 24726    GDTC=0:GDAC=&H00:GOSUB *AN06数値表示
  889. 24728  NEXT GDN
  890. 24730  TGDT#=GDT#(1,16):YS=Y0+YP*4:GDN=16
  891. 24731  GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
  892. 24732  TGDT#=GDT#(1,17):YS=Y0+YP*18:GDN=17
  893. 24733  GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
  894. 24734  TGDT#=GDT#(1,17):YS=Y0+YP*17:GDN=18
  895. 24735  GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
  896. 24736  GDT#(1,19)=GDT#(1,16)-GDT#(1,17)
  897. 24737  GDT1$="\"+RIGHT$(SPACE$(9)+STR$(GDT#(1,19)),9)
  898. 24738  YS=Y0+YP*(19)
  899. 24739  SYMBOL(X0+XP*1+8,YS+3),GDT1$,1,.8!,0,,,&H01
  900. 24740  XM=XG0
  901. 24741  LINE(XG0+6,YG0+6)-(XG0+XGP+6,YG0+YGP+6),PSET,0,BF,MESH$(18)
  902. 24742  LINE(XG0,YG0)-(XG0+XGP,YG0+YGP),PSET,7,B
  903. 24743  FOR GDN=1 TO 3:IF GDT#(1,16)=0 THEN 24747
  904. 24744    XG=XM+GDT#(1,GDN)/GDT#(1,16)*XGP
  905. 24746    LINE(XM,YG0)-(XG,YG0+YGP),PSET,0,BF,MESH$(IMSH(GDN))
  906. 24747    XM=XG
  907. 24748  NEXT GDN
  908. 24750  LINE(XG0,YG0-2)-(XG0+XGP,YG0-2),PSET,5
  909. 24751  LINE(XG0,YG0-5)-(XG0,YG0-2),PSET,5
  910. 24752  LINE(XG0+XGP*.5!,YG0-5)-(XG0+XGP*.5!,YG0-2),PSET,5
  911. 24753  LINE(XG0+XGP,YG0-5)-(XG0+XGP,YG0-2),PSET,5
  912. 24754  SCAL$="0"+SPACE$(18)+"50"+SPACE$(17)+"100 [%]"
  913. 24755  SYMBOL(XG0-3,YG0-15),SCAL$,.8!,.6!,5
  914. 24758  SYMBOL(430,YG0-33),"収入比率",1,1,7,,,&H01+&H02
  915. 24760  RGM=.75!
  916. 24761  CIRCLE(XC0+6,YC0+6),RC,0,,,,F,PSET,MESH$(18)
  917. 24762  CIRCLE(XC0,YC0),RC,7
  918. 24763  FOR GDN=4 TO 15
  919. 24764    IF GDT#(1,GDN)=0 OR GDT#(1,17)=0 THEN 24769
  920. 24765    RGX=RGM+GDT#(1,GDN)/GDT#(1,17)
  921. 24766    IF RGX>=1 THEN RGX=RGX-1
  922. 24768    CIRCLE(XC0,YC0),RC,0,,RGM,RGX,F,PSET,MESH$(IMSH(GDN))
  923. 24769    RGM=RGX
  924. 24770  NEXT GDN
  925. 24775  CIRCLE(XC0,YC0),40,0,,,,F,PSET,7
  926. 24778  SYMBOL(430,289),"支出比率",1,1,0,,,&H01+&H02
  927. 24830  GOSUB *画面フラッシュ
  928. 24840  RETURN
  929. 24845 '
  930. 24850 *AN06項目表示
  931. 24852  DATA 1,5,7,2,1,7,6,3,4,5,8,9,10,11,12
  932. 24855  RESTORE 24852
  933. 24860  FOR II=1 TO 15:READ IMSH(II)
  934. 24880  NEXT II
  935. 24890  RETURN
  936. 24900 *AN06数値表示
  937. 24902  GDT1$="\ "+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  938. 24903  IF TGDT#=0 THEN GDT2$="計算不能":GOTO 24916
  939. 24904  TGDP#=GDT#(1,GDN)/TGDT#
  940. 24906  GOSUB *小数点表示変換
  941. 24916  SYMBOL(X0+XP*1+8,YS+3),GDT1$,1,.8!,GDTC,,,GDAC
  942. 24918  SYMBOL(X0+XP*2+10,YS+3),GDT2$,1,.8!,GDTC,,,GDAC
  943. 24920  RETURN
  944. 24990 '
  945. 25000 *AN07:'//////////////////// [エンゲル係数推移 ]
  946. 25010  X0=18:Y0=96:XP=72:YP=16
  947. 25020  LINE(X0-4,Y0-4)-(X0+XP*6+4,Y0+YP*20+4),PSET,7,BF
  948. 25022  LINE(X0,Y0)-(X0+XP*6,Y0+YP*20),PSET,0,B
  949. 25023  LINE(X0-1,Y0-1)-(X0+XP*6+1,Y0+YP*20+1),PSET,0,B
  950. 25030  FOR II=1 TO 19:LINE(X0,Y0+YP*II)-(X0+XP*6,Y0+YP*II),PSET,0:NEXT II
  951. 25031  PAINT (X0+1,Y0+1),MESH$(5),0
  952. 25032  PAINT (X0+1,Y0+YP*19+1),MESH$(11),0
  953. 25040  FOR II=1 TO 5:LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*20),PSET,0:NEXT II
  954. 25043  DATA "  年.月","支出計[A]","基支出[B]","食  費[C]"," B/A"," C/A"
  955. 25044  RESTORE 25043:FOR II=0 TO 5 :READ ITM$
  956. 25045    SYMBOL(X0+XP*II+4,Y0+2),ITM$,.8!,.8!,0,,,&H01,1
  957. 25046  NEXT II
  958. 25047  SYMBOL(36,402),"合 計",.8!,.8!,0,,,&H01,1
  959. 25048  LINE(X0+XP*5-24,Y0)-(X0+XP*5,Y0+YP),PSET,0,BF,MESH$(9)
  960. 25049  LINE(X0+XP*6-24,Y0)-(X0+XP*6,Y0+YP),PSET,0,BF,MESH$(14)
  961. 25050  XG0=462:YG0=112:XGP=16:YGP=16
  962. 25052  LINE(XG0,YG0)-(XG0+XGP*10,YG0),PSET,5
  963. 25053  LINE(XG0,YG0)-(XG0,YG0+YGP*19+4),PSET,5
  964. 25054  LINE(XG0,YG0+YGP*18)-(XG0+XGP*10,YG0+YGP*19+4),PSET,5,BF
  965. 25060  FOR II=1 TO 10
  966. 25061  LINE(XG0+XGP*II,YG0)-(XG0+XGP*II,YG0+YGP*19+4),PSET,5,,&HAAAA
  967. 25062  NEXT II
  968. 25063  FOR II=1 TO 19
  969. 25064  LINE(XG0,YG0+YGP*II)-(XG0+XGP*10,YG0+YGP*II),PSET,5,,&HCCCC
  970. 25065  NEXT II
  971. 25066  SYMBOL(460,100),"0            50          100",.8!,.6!,5
  972. 25100 '-------------------- データ読み込み
  973. 25105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  974. 25110  SCN=3:GOSUB *グラフデータ初期化
  975. 25115  FOR II=1 TO 3:TGDT#(II)=0:NEXT II
  976. 25120  IYM$=YRS$+MNS$:GDN=1
  977. 25130  GOSUB *統計データ読みだし
  978. 25132  GDYM$=YRM$+"."+MNM$
  979. 25133  XS=X0+4:YS=Y0+YP*GDN+2
  980. 25135  SYMBOL(XS,YS),GDYM$,1,.8!,0,,,&H01,1
  981. 25140  IF FIDX=0 THEN 25160
  982. 25150    GDT#(1,GDN)=MX#(17):GDT#(1,19)=GDT#(1,19)+MX#(17):'92.10.11
  983. 25151    GDT#(2,GDN)=MX#(18):GDT#(2,19)=GDT#(2,19)+MX#(18)
  984. 25155    GDT#(3,GDN)=MX#(4) :GDT#(3,19)=GDT#(3,19)+MX#(4)
  985. 25160  GOSUB *分析年月日更新
  986. 25170  IF ANLCNT=0 THEN 25200
  987. 25180  GDN=GDN+1:GOTO 25130
  988. 25200 '-------------------- グラフ作成
  989. 25210  GDMAX=GDN
  990. 25220  FOR GDN=1 TO GDMAX
  991. 25230    GOSUB *AN07グラフ作成
  992. 25240  NEXT GDN
  993. 25250  GDN=19:GOSUB *AN07グラフ作成
  994. 25260  GOSUB *画面フラッシュ
  995. 25270  RETURN
  996. 25280 '
  997. 25300 *AN07グラフ作成
  998. 25312  GDT$(1)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  999. 25314  GDT$(2)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(2,GDN)),8)
  1000. 25316  GDT$(3)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(3,GDN)),8)
  1001. 25320  IF GDT#(1,GDN)=0 THEN GDT$(4)="計算不能":GOTO 25326
  1002. 25322  TGDP#=GDT#(2,GDN)/GDT#(1,GDN):X1OV=0
  1003. 25323  IF TGDP#<=1 THEN X1=XG0+TGDP#*XGP*10 ELSE X1=XG0+XGP*10:X1OV=1
  1004. 25324  GOSUB *小数点表示変換:GDT$(4)=GDT2$
  1005. 25326  IF GDT#(1,GDN)=0 THEN GDT$(5)="計算不能":GOTO 25340
  1006. 25328  TGDP#=GDT#(3,GDN)/GDT#(1,GDN):X2OV=0
  1007. 25329  IF TGDP#<=1 THEN X2=XG0+TGDP#*XGP*10 ELSE X2=XG0+XGP*10:X2OV=1
  1008. 25330  GOSUB *小数点表示変換:GDT$(5)=GDT2$
  1009. 25340  FOR II=1 TO 5
  1010. 25342    SYMBOL(X0+XP*II+4,Y0+YP*GDN+2),GDT$(II),.9!,.8!,0
  1011. 25344  NEXT II
  1012. 25345  IF GDT$(4)="計算不能" THEN 25360
  1013. 25350  Y=YG0+YGP*(GDN-1)
  1014. 25352  LINE(XG0,Y+2)-(X1,Y+10),PSET,0,BF,MESH$(9)
  1015. 25353  IF X1OV=1 THEN LINE(X1,Y+2)-(X1-1,Y+10),PSET,2,BF
  1016. 25354  LINE(XG0,Y+6)-(X2,Y+14),PSET,0,BF,MESH$(14)
  1017. 25355  IF X2OV=1 THEN LINE(X2,Y+6)-(X2-1,Y+14),PSET,2,BF
  1018. 25360  RETURN
  1019. 25370 '
  1020. 25490 '
  1021. 25500 '*AN08:'//////////////////// [年別動向比較  ]
  1022. 25990 '
  1023. 26000 *AN08:'//////////////////// [月間レポート印刷 ]
  1024. 26010  X0=14:Y0=92:YP=16
  1025. 26020  LINE(X0,Y0)-(X0+608,Y0+YP*21-5),PSET,7,BF
  1026. 26022  FOR II=0 TO 20
  1027. 26024    CIRCLE(X0+8,Y0+YP*II+8),4,0,,,,F
  1028. 26026    CIRCLE(X0+600,Y0+YP*II+8),4,0,,,,F
  1029. 26028  NEXT II
  1030. 26100 '-------------------- データ読み込み
  1031. 26105  MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1032. 26120  IYM$=YRS$+MNS$:LOCATE 0,5:COLOR 0:CR$=CHR$(&H0D,&H0A)
  1033. 26125  SCN=2:GOSUB *グラフデータ初期化
  1034. 26130  GOSUB *HKISRC
  1035. 26132  GDYM$=YRM$+"."+MNM$
  1036. 26135  PR1$="月間家計簿リスト 《"+YRM$+"年"+MNM$+"月》"
  1037. 26136  PR2$="家計簿System Ver.4.0 "+DATE$+" "+TIME$
  1038. 26140  COLOR 0:PRINT SPACE$(4)+PR1$+SPACE$(2)+PR2$:PRINT
  1039. 26142  GOSUB *LAJ2:LPRINT PR1$+SPACE$(6)+PR2$+CR$
  1040. 26148 '
  1041. 26150  PR$="【出来事】"
  1042. 26151  COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
  1043. 26152  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1044. 26155  FOR RDY=1 TO 31
  1045. 26160    GOSUB *HKDGET:GOSUB *AN08分析
  1046. 26165    YR=YRM:MN=MNM:DY=RDY:GOSUB *週分析
  1047. 26166    IF RDY>MNDN THEN PRINT:LPRINT:GOTO 26190
  1048. 26170    PR$=RIGHT$(STR$(100+RDY),2)+"("+WKM$+") "+DEV$
  1049. 26180    PRINT SPACE$(4)+PR$:GOSUB *LAJ:LPRINT PR$
  1050. 26190  NEXT RDY
  1051. 26198 '
  1052. 26200  PRINT:LPRINT
  1053. 26210  PR$="【収 入】"
  1054. 26211  COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
  1055. 26212  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1056. 26220  GOSUB *統計データ読みだし
  1057. 26230  PR$=" 項目    合計金額   1日平均     最高額   比  率     日数"
  1058. 26231  PRX$=" 項目    合計金額   1日平均   最高額   比  率    日数"
  1059. 26232  COLOR 0:PRINT SPACE$(4)+PRX$
  1060. 26234  GOSUB *LAJ2:LPRINT PR$
  1061. 26240  FOR GDN=1 TO 3
  1062. 26242    GOSUB *AN08項目印刷
  1063. 26244  NEXT GDN:PRINT:LPRINT
  1064. 26246  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(16)),8)
  1065. 26248  PR2#=INT(MX#(16)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1066. 26250  PR$="合 計"+"  "+PR1$+"  "+PR2$
  1067. 26252  COLOR 0:PRINT SPACE$(4)+PR$
  1068. 26254  GOSUB *LAJ2:LPRINT PR$
  1069. 26258 '
  1070. 26260  PRINT:LPRINT
  1071. 26270  PR$="【支 出】"
  1072. 26271  COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
  1073. 26272  GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
  1074. 26280  PR$=" 項目    合計金額   1日平均     最高額   比  率     日数"
  1075. 26281  PRX$=" 項目    合計金額   1日平均   最高額   比  率    日数"
  1076. 26282  COLOR 0:PRINT SPACE$(4)+PRX$
  1077. 26284  GOSUB *LAJ2:LPRINT PR$
  1078. 26290  FOR GDN=4 TO 15
  1079. 26292    GOSUB *AN08項目印刷
  1080. 26294  NEXT GDN:PRINT:LPRINT
  1081. 26300  GDN=18:ITEMX$=ITEM$(18+1):ITEM$(18+1)="基支出"
  1082. 26302  GOSUB *AN08項目印刷
  1083. 26304  ITEM$(18+1)=ITEMX$
  1084. 26310  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(17)),8)
  1085. 26312  PR2#=INT(MX#(17)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1086. 26314  PR$="合 計"+"  "+PR1$+"  "+PR2$
  1087. 26316  COLOR 0:PRINT SPACE$(4)+PR$
  1088. 26318  GOSUB *LAJ2:LPRINT PR$
  1089. 26320 '
  1090. 26330  FOR II=5 TO 22:COLOR 0:PRINT SPACE$(78);:NEXT II
  1091. 26340  SYMBOL(268,222),"印刷終了",1,1,0,,,&H01+&H02,2
  1092. 26350  GOSUB *画面フラッシュ
  1093. 26360  RETURN
  1094. 26380 '
  1095. 26400 *AN08分析
  1096. 26410  FOR GDN=1 TO 18
  1097. 26412    IF DYN#(GDN)<>0 THEN GDT#(2,GDN)=GDT#(2,GDN)+1
  1098. 26414    IF DYN#(GDN)>GDT#(1,GDN) THEN GDT#(1,GDN)=DYN#(GDN)
  1099. 26416  NEXT GDN
  1100. 26420  RETURN
  1101. 26430 *AN08項目印刷
  1102. 26432  PR1$=RIGHT$(SPACE$(8)+STR$(MX#(GDN)),8)
  1103. 26434  PR2#=INT(MX#(GDN)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
  1104. 26436  PR3$=RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
  1105. 26438  TGDP#=MX#(GDN)/MX#(16):GOSUB *小数点表示変換:PR4$=GDT2$
  1106. 26440  PR5$=RIGHT$(STR$(GDT#(2,GDN)),2)
  1107. 26442  PR$=ITEM$(GDN+1)+"  "+PR1$+"  "+PR2$+"  "+PR3$+"  "+PR4$+"    "+PR5$
  1108. 26444  COLOR 0:PRINT SPACE$(4)+PR$
  1109. 26446  GOSUB *LAJ2:LPRINT PR$
  1110. 26448  RETURN
  1111. 26490 '
  1112. 26500 *AN09:'//////////////////// [総計演算処理  ]
  1113. 26505  GOSUB *分析結果画面消去
  1114. 26510  MESN=20:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
  1115. 26520  GOSUB *HKIOPN:CLOSE
  1116. 26530  RI=1 :GOSUB *HKIGET:SX$(1)=YRM$:SX$(2)=MNM$
  1117. 26540  RI=IR:GOSUB *HKIGET:SX$(3)=YRM$:SX$(4)=MNM$
  1118. 26550  GOSUB *分析条件表示
  1119. 26590  LOCATE 0,5
  1120. 26600  FOR LOOP=1 TO IR
  1121. 26610    RI=LOOP:GOSUB *HKIGET
  1122. 26620    COLOR 7
  1123. 26630    PRINT "   ";YRM$;"年";MNM$;"月 家計簿ファイル --- ";
  1124. 26650    IF RIGHT$(IMAK$,1)<>" " THEN 26710
  1125. 26660    COLOR 6:PRINT "処理中 !! ";
  1126. 26670    GOSUB *HKTCAL
  1127. 26680    RMN=MNM:GOSUB *HKTPUT
  1128. 26685    MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
  1129. 26690    LOCATE POS(0)-10,CSRLIN:COLOR 4:PRINT "処理終了  "
  1130. 26700    GOTO 26720
  1131. 26710    PRINT "処理済    "
  1132. 26720  NEXT LOOP
  1133. 26730  GOSUB *分析結果画面消去
  1134. 26980  RETURN
  1135. 26990 '
  1136. 27000 *AN10:'//////////////////// [
  1137. 27500 *AN11:'//////////////////// [
  1138. 28000 *AN12:'//////////////////// [
  1139. 28500 *AN13:'//////////////////// [
  1140. 29000 *AN14:'//////////////////// [
  1141. 29500 *AN15:'//////////////////// [
  1142. 29990 '
  1143. 30000 *分析条件合理性判定
  1144. 30020  YRS$=RIGHT$(STR$(10000+YRS),4)
  1145. 30030  MNS$=RIGHT$(STR$(100+MNS),2):IYM$=YRS$+MNS$:GOSUB *HKISRC
  1146. 30040    IF FIDX=0 THEN  MESN=15:GOSUB *VALERR :GOTO 30160:'NG
  1147. 30050  IF SMOPT(SMODE,2)=0             THEN 30110:'?
  1148. 30060  YRE$=RIGHT$(STR$(10000+YRE),4)
  1149. 30070  MNE$=RIGHT$(STR$(100+MNE),2):IYM$=YRE$+MNE$:GOSUB *HKISRC
  1150. 30080    IF FIDX=0 THEN  MESN=16:GOSUB *VALERR :GOTO 30160:'NG
  1151. 30090    IF (YRS*12+MNS)<=(YRE*12+MNE) THEN 30102:'?
  1152. 30100                    MESN=7 :GOSUB *VALERR :GOTO 30160:'NG
  1153. 30102    IF (YRE*12+MNE)-(YRS*12+MNS)<=SMOPT(SMODE,2)-1 THEN 30110:'?
  1154. 30103    ASMES$="★★分析期間範囲:"+STR$(SMOPT(SMODE,2))+"か月以内"
  1155. 30104                    MESN=8 :GOSUB *VALERR:GOTO 30160:'NG 
  1156. 30110  IF SMOPT(SMODE,3)=0             THEN 30150:'OK
  1157. 30120    IF SITM=1 THEN  MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1158. 30121    IF SITM=20 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1159. 30125    IF SITM=0 THEN  MESN=11:GOSUB *VALERR :GOTO 30160:'NG
  1160. 30130    IF SMOPT(SMODE,3)=1           THEN 30150:'OK
  1161. 30140    IF SITM>16 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
  1162. 30150  ANLCDF=1:RETURN:'Good  !!
  1163. 30160  ANLCDF=0:RETURN:'No Good!
  1164. 30170  *VALERR
  1165. 30175   GOSUB *MESDSP:MESN=25:GOSUB *SNDMSG
  1166. 30176   LOCATE 50,23:COLOR 7:PRINT ASMES$;
  1167. 30180   FOR II=1 TO 10000:NEXT II
  1168. 30185   MESN=3:GOSUB *MESDSP:ASMES$=""
  1169. 30190   RETURN
  1170. 30195 '
  1171. 30200 *スケール検出
  1172. 30210  FOR II=1 TO SCN:SMAX#(II)=0:NEXT II
  1173. 30220  FOR II=1 TO SCN:FOR JJ=1 TO 31
  1174. 30230    IF ABS(GDT#(II,JJ))>SMAX#(II) THEN SMAX#(II)=ABS(GDT#(II,JJ))
  1175. 30240  NEXT JJ:NEXT II
  1176. 30250  DATA     1000,    1500,    2000,    2500,    5000,    7500
  1177. 30260  DATA    10000,   15000,   20000,   25000,   50000,   75000
  1178. 30270  DATA   100000,  150000,  200000,  250000,  500000,  750000
  1179. 30280  DATA  1000000, 1500000, 2000000, 2500000, 5000000, 7500000
  1180. 30290  DATA 10000000,15000000,20000000,25000000,50000000,75000000
  1181. 30300  FOR II=1 TO SCN
  1182. 30305    RESTORE 30250
  1183. 30310    FOR JJ=1 TO 30:READ SCAL#(II)
  1184. 30320      IF SCAL#(II)>SMAX#(II) THEN JJ=31:GOTO 30330
  1185. 30330  NEXT JJ:NEXT II
  1186. 30340  RETURN
  1187. 30395 '
  1188. 30400 *グラフデータ初期化
  1189. 30410  FOR II=1 TO SCN:FOR JJ=0 TO 31
  1190. 30420    GDT#(II,JJ)=0
  1191. 30430  NEXT JJ:NEXT II:TGDT#=0
  1192. 30440  RETURN
  1193. 30450 *ITM変換
  1194. 30460  GITM=SITM-1
  1195. 30470  IF SITM=19 THEN GITM=17
  1196. 30480  IF SITM=18 THEN GITM=18
  1197. 30490  RETURN
  1198. 30495 '
  1199. 30500 *統計データ読みだし
  1200. 30510  GOSUB *HKISRC
  1201. 30520  IF FIDX=0 THEN 30580
  1202. 30530  IF RIGHT$(IMAK$,1)<>" " THEN 30570
  1203. 30540  GOSUB *HKTCAL
  1204. 30550  RMN=MNM:GOSUB *HKTPUT
  1205. 30560  MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
  1206. 30570  RMN=MNM:GOSUB *HKTGET
  1207. 30580  RETURN
  1208. 30590 '
  1209. 30600 *スケール検出2
  1210. 30610  SMAXW#=0
  1211. 30620  FOR II=1 TO SCN
  1212. 30630    IF SCAL#(II)<SMAXW# THEN 30650
  1213. 30640    SMAXN=II:SMAXW#=SCAL#(II)
  1214. 30650  NEXT II
  1215. 30660  RETURN
  1216. 30670 '
  1217. 30700 *シート選択判定
  1218. 30710  X0=52:Y0=262:XP=3:YP=-10:YO=128
  1219. 30720  IF X_M<X0-1 OR X_M>X0+XP*31*6-1 THEN 30770
  1220. 30730  IF Y_M<Y0+YP*10 OR Y_M>Y0+YO    THEN 30770
  1221. 30735  IF Y_M>Y0 AND Y_M<Y0+YO+YP*10   THEN 30770
  1222. 30740  IF Y_M>Y0 THEN YOFF=1 ELSE YOFF=0
  1223. 30750  TBS=INT((X_M-(X0-1))/XP)+1+YOFF*31*6
  1224. 30760  PLAY "O6L16EC":RETURN
  1225. 30770  TBS=0:PLAY "O7L16CE":RETURN
  1226. 30780 '
  1227. 30800 *画面フラッシュ
  1228. 30810  FOR II=1 TO 5
  1229. 30820    PALETTE 13,[255,160,200]
  1230. 30825  '  PALETTE  8,[160,240,250]
  1231. 30830    FOR JJ=1 TO 500:NEXT JJ
  1232. 30840    PALETTE 13,[160,160,200]
  1233. 30845  '  PALETTE  8,[ 64, 64, 64]
  1234. 30850    FOR JJ=1 TO 300:NEXT JJ
  1235. 30860  NEXT II
  1236. 30870  RETURN
  1237. 30880 '
  1238. 30900 *小数点表示変換
  1239. 30910  GDT21=INT(TGDP#*100)
  1240. 30920  GDT22$=RIGHT$(STR$(INT(10000+(TGDP#*100-GDT21)*1000)),3)
  1241. 30930  GDT21$=STR$(GDT21)+"."
  1242. 30940  GDT2$=RIGHT$(SPACE$(5)+GDT21$+GDT22$+" %",9)
  1243. 30950  RETURN
  1244. 30960 '
  1245. 31000 *LAJ  :'////////// 漢字文字ピッチ縮小
  1246. 31010  LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H22,&H76);
  1247. 31020  RETURN
  1248. 31040 *LAJ2 :'////////// 漢字文字ピッチ縮小2
  1249. 31050  LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H23,&H72);
  1250. 31060  RETURN
  1251. 31070 '
  1252. 36000 *メッシュデータ定義
  1253. 36005 '//////// [1]青
  1254. 36010  MESH$(1)=CHR$(&H99,&H99,&H99,&H99)
  1255. 36015 '//////// [2]赤
  1256. 36020  MESH$(2)=CHR$(&HAA,&HAA,&HAA,&HAA)
  1257. 36025 '//////// [3]ピンク
  1258. 36030  MESH$(3)=CHR$(&HBB,&HBB,&HBB,&HBB)
  1259. 36035 '//////// [4]緑
  1260. 36040  MESH$(4)=CHR$(&HCC,&HCC,&HCC,&HCC)
  1261. 36045 '//////// [5]青グレー
  1262. 36050  MESH$(5)=CHR$(&HDD,&HDD,&HDD,&HDD)
  1263. 36055 '//////// [6]黄色
  1264. 36060  MESH$(6)=CHR$(&HEE,&HEE,&HEE,&HEE)
  1265. 36065 '//////// [7]うす青
  1266. 36070  MESH$(7)=CHR$(&H9F,&H9F,&H9F,&H9F,&HF9,&HF9,&HF9,&HF9)
  1267. 36075 '//////// [8]うす赤
  1268. 36080  MESH$(8)=CHR$(&HAF,&HAF,&HAF,&HAF,&HFA,&HFA,&HFA,&HFA)
  1269. 36085 '//////// [9]うすピンク
  1270. 36090  MESH$(9)=CHR$(&HBF,&HBF,&HBF,&HBF,&HFB,&HFB,&HFB,&HFB)
  1271. 36095 '//////// [10]うす緑
  1272. 36100  MESH$(10)=CHR$(&HCF,&HCF,&HCF,&HCF,&HFC,&HFC,&HFC,&HFC)
  1273. 36105 '//////// [11]うす青グレー
  1274. 36110  MESH$(11)=CHR$(&HDF,&HDF,&HDF,&HDF,&HFD,&HFD,&HFD,&HFD)
  1275. 36115 '//////// [12]うす黄色
  1276. 36120  MESH$(12)=CHR$(&HEF,&HEF,&HEF,&HEF,&HFE,&HFE,&HFE,&HFE)
  1277. 36125 '//////// [13]オレンジ
  1278. 36130  MESH$(13)=CHR$(&HAE,&HAE,&HAE,&HAE,&HEA,&HEA,&HEA,&HEA)
  1279. 36135 '//////// [14]赤紫
  1280. 36140  MESH$(14)=CHR$(&HAB,&HAB,&HAB,&HAB,&HBA,&HBA,&HBA,&HBA)
  1281. 36145 '//////// [15]しろ斜線青
  1282. 36150  MESH$(15)=CHR$(&HF9,&H99,&HF9,&H99,&H99,&H9F,&H99,&H9F,&H99,&HF9,&H99,&HF9,&H9F,&H99,&H9F,&H99)
  1283. 36155 '//////// [16]しろグレー
  1284. 36160  MESH$(16)=CHR$(&H77,&H77,&H77,&H77)
  1285. 36165 '//////// [17]明るいしろグレー
  1286. 36170  MESH$(17)=CHR$(&H7F,&H7F,&H7F,&H7F,&HF7,&HF7,&HF7,&HF7)
  1287. 36175 '//////// [18]暗いしろグレー
  1288. 36180  MESH$(18)=CHR$(&H70,&H70,&H70,&H70,&H07,&H07,&H07,&H07)
  1289. 36190  RETURN
  1290. 36195 '
  1291. 36990 '
  1292. 37000 *分析モード読み取り
  1293. 37005  RESTORE *分析モード項目:READ MODEN
  1294. 37010  FOR SMODE=1 TO MODEN
  1295. 37015    READ SMODE$(SMODE)
  1296. 37020    FOR II=1 TO 3:READ SMOPT(SMODE,II):NEXT II
  1297. 37025  NEXT SMODE
  1298. 37030  SMODE=1
  1299. 37035  RESTORE *項目データ
  1300. 37040  FOR II=1 TO 20
  1301. 37045    READ ITEM$(II),ITEMC(II)
  1302. 37046    IF II>1 AND II<17 THEN ITEM$(II)=CFI$(II-1)
  1303. 37050  NEXT II
  1304. 37055  RETURN
  1305. 37060 '
  1306. 37065 *ボタン座標読み取り
  1307. 37070  RESTORE *ボタン座標:READ SWGN
  1308. 37075  FOR G=1 TO SWGN
  1309. 37080    READ SWN(G),SMX(G),SMY(G),SMW(G)
  1310. 37085    FOR B=1 TO SWN(G)
  1311. 37090      READ XB1(G,B),XB2(G,B),YB1(G,B),YB2(G,B)
  1312. 37095    NEXT B
  1313. 37100  NEXT G
  1314. 37105  RETURN
  1315. 37110 '
  1316. 37115 *ボタンON_OFF表示
  1317. 37120  IF BST(G,B)=1 THEN BSC=7:BSB=0:BSA=2:GOTO 37130
  1318. 37125                    BSC=0:BSB=7:BSA=5
  1319. 37130   CONNECT(XB1(G,B  ),YB2(G,B)  )-(XB2(G,B)  ,YB2(G,B)  )-(XB2(G,B  ),YB1(G,B)  ),BSC,PSET
  1320. 37135   CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB2(G,B)-1,YB2(G,B)-1)-(XB2(G,B)-1,YB1(G,B)+1),BSC,PSET
  1321. 37140   CONNECT(XB1(G,B)  ,YB2(G,B)  )-(XB1(G,B)  ,YB1(G,B)  )-(XB2(G,B)  ,YB1(G,B)  ),BSB,PSET
  1322. 37145   CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB1(G,B)+1,YB1(G,B)+1)-(XB2(G,B)-1,YB1(G,B)+1),BSB,PSET
  1323. 37150   LINE(XB1(G,B)+4,YB1(G,B)+4)-(XB1(G,B)+6,YB1(G,B)+5),PSET,BSA,BF
  1324. 37152   IF BST(G,B)=1 THEN SMSGPLAY 0:WAIT 8
  1325. 37155  RETURN
  1326. 37160 '
  1327. 37165 *マウスボタン選択
  1328. 37170  SWERC=0
  1329. 37175  IF MOUSE(2,0)=0 THEN 37175
  1330. 37180  X_M=MOUSE(4,0):Y_M=MOUSE(5,0):SWNO=0
  1331. 37185  FOR IMS=1 TO SWN(G)
  1332. 37190    IF (X_M>XB1(G,IMS) AND X_M<XB2(G,IMS)) ELSE 37205
  1333. 37195    IF (Y_M>YB1(G,IMS) AND Y_M<YB2(G,IMS)) ELSE 37205
  1334. 37200    SWNO=IMS:IMS=SWN(G)+1
  1335. 37205  NEXT IMS:FOR IM=1 TO 500:NEXT IM
  1336. 37210  IF SWNO=0 AND SWPASS=1 THEN GOSUB *シート選択判定:GOTO 37230
  1337. 37215  IF SWNO=0 AND SWERC>5  THEN MESN=12:GOSUB *SNDMSG       :GOTO 37175
  1338. 37220  IF SWNO=0              THEN SMSGPLAY 3:SWERC=SWERC+1:GOTO 37175
  1339. 37230  SWPASS=0
  1340. 37235  RETURN
  1341. 37240 '
  1342. 37245 *数字漢字変換
  1343. 37250  NBK$=""
  1344. 37255  FOR INBK=1 TO NBN
  1345. 37260    NBAX$=MID$(NBA$,INBK,1)
  1346. 37265    IF NBAX$=" " THEN NBK$=NBK$+" ":GOTO 37275
  1347. 37270    NBK$=NBK$+KNJ$(&H2330+VAL(NBAX$))
  1348. 37275  NEXT INBK
  1349. 37280  RETURN
  1350. 37285 '
  1351. 37290 '
  1352. 37305 '
  1353. 37310 *FADEOUT:CLS 1:CONSOLE 0,24,0
  1354. 37315  FOR II=0 TO 15
  1355. 37320    PALETTE II,[16*II,16*II,16*II]
  1356. 37325  NEXT II
  1357. 37330  FOR II=0 TO 255 STEP 5
  1358. 37335    FOR JJ=0 TO 15:KK=16*JJ+II*(255-16*JJ)/255
  1359. 37340      PALETTE JJ,[KK,KK,KK]
  1360. 37345    NEXT JJ
  1361. 37350  NEXT II
  1362. 37355  RETURN
  1363. 37360 '
  1364. 37365 *確認
  1365. 37370  LOCATE 27,3:PRINT SPACE$(52)
  1366. 37375  GET@A(214,50)-(630,79),CUTN#
  1367. 37380  LOAD@ TIFDRV$+"\CAUTION.TIF",(214,50)
  1368. 37382  PLAY "o6l4ce"
  1369. 37385  FOR II=1 TO 4
  1370. 37390    LOCATE 40,3:COLOR 6:PRINT CMES$;:'28chr
  1371. 37395    WAIT SWAIT/10
  1372. 37400    LOCATE 40,3:PRINT SPACE$(28)
  1373. 37405    WAIT SWAIT/10
  1374. 37410  NEXT II
  1375. 37415  LOCATE 40,3:COLOR 7:PRINT CMES$;:MESN=19:GOSUB *SNDMSG:'28chr
  1376. 37420  G=3:GOSUB *マウスボタン選択
  1377. 37425  G=3:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
  1378. 37430  LOCATE 40,3:PRINT SPACE$(28)
  1379. 37435  WAIT SWAIT/5
  1380. 37440  PUT@A(214,50)-(630,79),CUTN#
  1381. 37445  RETURN
  1382. 37450 '
  1383. 37500 *HKIOPN:'---------- インデックスファイルオープン
  1384. 37510  DRV$=LEFT$(DATDRV$,2)
  1385. 37520  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37540
  1386. 37530  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1387. 37540  FLN$=DRV$+"(38)"+PATH$+"\HLIDX.DAT"
  1388. 37550  OPEN "R",#2,FLN$
  1389. 37560  FIELD #2,6 AS I$(1),32 AS I$(2)
  1390. 37570  IR=LOF(2)
  1391. 37580  RETURN
  1392. 37590 '
  1393. 37600 *HKDOPN:'---------- 家計簿データファイルオープン
  1394. 37610  DRV$=LEFT$(DATDRV$,2)
  1395. 37620  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37640
  1396. 37630  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1397. 37640  FLN$=DRV$+"(768)"+PATH$+"\HL"+IYM$+".DAT"
  1398. 37650  OPEN "R",#1,FLN$
  1399. 37660  FIELD #1,64 AS D$(1),10*16 AS D$(2),32*4 AS D$(3),32*4 AS D$(4),32*4 AS D$(5),32*4 AS D$(6),32 AS D$(7)
  1400. 37670  AR=LOF(1)
  1401. 37680  RETURN
  1402. 37690 '
  1403. 37700 *ANLSOPN:'---------- 分析条件ファイルオープン
  1404. 37710  DRV$=LEFT$(PRGDRV$,2)
  1405. 37720  IF LEN(PRGDRV$)=3 THEN DRV$=LEFT$(PRGDRV$,2):PATH$="":GOTO 37740
  1406. 37730  PATH$=RIGHT$(PRGDRV$,LEN(PRGDRV$)-2)
  1407. 37740  FLN$=DRV$+"(54)"+PATH$+"\ANLS.DAT"
  1408. 37750  OPEN "R",#1,FLN$
  1409. 37760  FIELD #1,4 AS S$(1),2 AS S$(2),4 AS S$(3),2 AS S$(4),24 AS S$(5),8 AS S$(6),8 AS S$(7),2 AS S$(8)
  1410. 37770  RETURN
  1411. 37780 '
  1412. 37790 *HKTOPN:'---------- 年間統計ファイルオープン
  1413. 37800  DRV$=LEFT$(DATDRV$,2)
  1414. 37810  IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37830
  1415. 37820  PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
  1416. 37830  FLN$=DRV$+"(200)"+PATH$+"\HL"+LEFT$(IYM$,4)+"AL.DAT"
  1417. 37840  OPEN "R",#1,FLN$
  1418. 37850  FIELD #1,10*20 AS M$
  1419. 37860  RETURN
  1420. 37870 '
  1421. 37880 *HKISRC:'---------- インデックスファイル検索
  1422. 37890  FIDX=0
  1423. 37900  GOSUB *HKIOPN
  1424. 37910  FOR R=1 TO IR
  1425. 37920    GET #2,R
  1426. 37930    IF IYM$<>I$(1) THEN 37950
  1427. 37940    IYM$=I$(1):IMAK$=I$(2):RI=R:R=IR+1:FIDX=1
  1428. 37950  NEXT R:IF FIDX=0 THEN 37980
  1429. 37960  GET #2,RI
  1430. 37965  YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
  1431. 37970  YRM=VAL(YRM$):MNM=VAL(MNM$)
  1432. 37980  CLOSE #2
  1433. 37990  RETURN
  1434. 38000 '
  1435. 38010 *HKIPUT:'---------- インデックスファイル書き込み
  1436. 38020  GOSUB *HKIOPN
  1437. 38030  LSET I$(1)=IYM$
  1438. 38040  LSET I$(2)=IMAK$
  1439. 38050  PUT #2,RI
  1440. 38060  CLOSE #2
  1441. 38070  RETURN
  1442. 38080 '
  1443. 38090 *HKDGET:'---------- 家計簿データ読み込み
  1444. 38100  GOSUB *HKDOPN
  1445. 38110  R=RDY
  1446. 38120  GET #1,R
  1447. 38130  DEV$=D$(1)
  1448. 38140  FOR II=1 TO 16:DYN$(II   )=MID$(D$(2),(II-1)*10+1,10):NEXT II
  1449. 38150  FOR II=1 TO  4:DRM$(II+ 0)=MID$(D$(3),(II-1)*32+1,32):NEXT II
  1450. 38160  FOR II=1 TO  4:DRM$(II+ 4)=MID$(D$(4),(II-1)*32+1,32):NEXT II
  1451. 38170  FOR II=1 TO  4:DRM$(II+ 8)=MID$(D$(5),(II-1)*32+1,32):NEXT II
  1452. 38180  FOR II=1 TO  4:DRM$(II+12)=MID$(D$(6),(II-1)*32+1,32):NEXT II
  1453. 38190  DDM$=D$(7)
  1454. 38200  GOSUB *HKDCAL
  1455. 38210  CLOSE #1
  1456. 38220  RETURN
  1457. 38230 '
  1458. 38240 *HKDCAL:'---------- 家計簿金額計算
  1459. 38250  FOR II=1 TO 15:DYN#(II)=VAL(DYN$(II)):NEXT II
  1460. 38255  IF TCALF=1 THEN TCALF=0:RETURN
  1461. 38260  DYN#(16)=0:FOR II=1 TO 3 :DYN#(16)=DYN#(16)+DYN#(II):NEXT II
  1462. 38270  DYN$(16)=RIGHT$(SPACE$(8)+STR$(DYN#(16)),8)
  1463. 38280  DYN#(18)=0:FOR II=4 TO 7 :DYN#(18)=DYN#(18)+DYN#(II):NEXT II
  1464. 38290  DYN$(18)=RIGHT$(SPACE$(8)+STR$(DYN#(18)),8)
  1465. 38300  DYN#(17)=0:FOR II=4 TO 15:DYN#(17)=DYN#(17)+DYN#(II):NEXT II
  1466. 38310  DYN$(17)=RIGHT$(SPACE$(8)+STR$(DYN#(17)),8)
  1467. 38320  RETURN
  1468. 38330 '
  1469. 38340 *ANLSGET:'---------- 分析条件ファイル読み込み
  1470. 38350  GOSUB *ANLSOPN
  1471. 38360  GET #1,1
  1472. 38370  FOR II=1 TO 8:SX$(II)=S$(II):NEXT II
  1473. 38380  CLOSE #1
  1474. 38390  SR1YR=VAL(SX$(1)):SR1MN=VAL(SX$(2))
  1475. 38400  SR2YR=VAL(SX$(3)):SR2MN=VAL(SX$(4))
  1476. 38410  RETURN
  1477. 38420 '
  1478. 38430 *ANLSPUT:'---------- 分析条件ファイル書き込み
  1479. 38440  GOSUB *ANLSOPN
  1480. 38450  FOR II=1 TO 8:LSET S$(II)=SX$(II):NEXT II
  1481. 38460  PUT #1,1
  1482. 38470  CLOSE #1
  1483. 38480  RETURN
  1484. 38490 '
  1485. 38500 *HKTGET:'---------- 年間統計ファイル読み込み
  1486. 38510  GOSUB *HKTOPN
  1487. 38520  R=RMN
  1488. 38530  GET #1,R
  1489. 38540  FOR II=1 TO 20
  1490. 38550    MX$(II)=MID$(M$,(II-1)*10+1,10)
  1491. 38560    MX#(II)=VAL(MX$(II))
  1492. 38570  NEXT II
  1493. 38580  CLOSE #1
  1494. 38590  RETURN
  1495. 38600 '
  1496. 38610 *HKTPUT:'---------- 年間統計ファイル書き込み
  1497. 38620  GOSUB *HKTOPN
  1498. 38630  R=RMN:MX$=SPACE$(200)
  1499. 38640  FOR II=1 TO 20
  1500. 38650    MX$(II)=RIGHT$(SPACE$(10)+STR$(MX#(II)),10)
  1501. 38660    MID$(MX$,(II-1)*10+1,10)=MX$(II)
  1502. 38670    LSET M$=MX$
  1503. 38680  NEXT II
  1504. 38690  PUT #1,R
  1505. 38700  CLOSE #1
  1506. 38710  RETURN
  1507. 38720 '
  1508. 38730 *HKTCAL:'---------- 年間統計ファイル演算
  1509. 38735  LXX=POS(0):LYX=CSRLIN
  1510. 38740  FOR II=1 TO 20:MX#(II)=0:NEXT II
  1511. 38750  FOR RDY=1 TO 31
  1512. 38755    LOCATE 60,23:COLOR 4
  1513. 38756    PRINT YRM$;".";MNM$;".";RIGHT$(" "+STR$(RDY),2);" 演算中";
  1514. 38760    GOSUB *HKDGET
  1515. 38770    FOR II=1 TO 18
  1516. 38780      MX#(II)=MX#(II)+DYN#(II)
  1517. 38790    NEXT II
  1518. 38800  NEXT RDY
  1519. 38810  CLOSE:LOCATE 60,23:COLOR 7:PRINT SPACE$(19);
  1520. 38820  LOCATE LXX,LYX:RETURN
  1521. 38830 '
  1522. 38840 *HKIGET:'---------- インデックスデータ読みだし
  1523. 38850  GOSUB *HKIOPN
  1524. 38860  GET #2,RI
  1525. 38870  IYM$=I$(1):IMAK$=I$(2)
  1526. 38880  YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
  1527. 38890  YRM=VAL(YRM$):MNM=VAL(MNM$)
  1528. 38900  CLOSE #2
  1529. 38910  RETURN
  1530. 38920 '
  1531. 39000 '//////////////////////////////////////////////////
  1532. 39010 *CONFIGファイルチェック'  V1.1 1993.08.04
  1533. 39020 '                         FOR HK T.Komura
  1534. 39030  OPEN "R",#1,"(1)HK.CFG"
  1535. 39040  FIELD #1,1 AS D$
  1536. 39050  IF LOF(1)=0 THEN *CFGFE1
  1537. 39060  CLOSE
  1538. 39070  OPEN "I",#1,"HK.CFG"
  1539. 39080  GOSUB *CFGREAD:PRGDRV$=CFG$:'-- PRGDRV$
  1540. 39090  GOSUB *CFGREAD:DATDRV$=CFG$:'-- DATDRV$
  1541. 39100  GOSUB *CFGREAD:RAMDRV$=CFG$:'-- RAMDRV$
  1542. 39110  TIFDRV$=PRGDRV$+"\TIFF"    :'-- TIFDRV$
  1543. 39120  GOSUB *CFGREAD:FMBDRV$=CFG$:'-- FMBDRV$
  1544. 39130  GOSUB *CFGREAD             :'-- SNDMF
  1545. 39140    IF LEFT$(CFG$,5)<>"SNDMF" THEN *CFGFE2
  1546. 39150    SNDMF=VAL(RIGHT$(CFG$,1))
  1547. 39160  GOSUB *CFGREAD:SNDDRV$=CFG$:'-- SNDDRV$
  1548. 39170  GOSUB *CFGREAD             :'-- SWAIT
  1549. 39180    IF LEFT$(CFG$,4)<>"WAIT" THEN *CFGFE2
  1550. 39190    SWAIT=VAL(RIGHT$(CFG$,LEN(CFG$)-5))
  1551. 39200  FOR II=1 TO 15
  1552. 39210    GOSUB *CFGREAD:CFI$(II)=CFG$
  1553. 39220  NEXT II
  1554. 39230  GOSUB *CFGREAD             :'-- DICIF
  1555. 39240    IF LEFT$(CFG$,5)<>"DICIF" THEN *CFGFE2
  1556. 39250    DICIF=VAL(RIGHT$(CFG$,1))
  1557. 39260  GOSUB *CFGREAD             :'-- DICSF
  1558. 39270    IF LEFT$(CFG$,5)<>"DICSF" THEN *CFGFE2
  1559. 39280    DICSF=VAL(RIGHT$(CFG$,1))
  1560. 39290  GOSUB *CFGREAD:DICDRV$=CFG$:'-- DICDRV$
  1561. 39300  CLOSE
  1562. 39310  RETURN
  1563. 39320 '---------------------------------------------
  1564. 39330 *CFGFE1
  1565. 39340  LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルが見当たりません。 家計簿を終了します。"
  1566. 39350  CLOSE:WAIT 100:SYSTEM
  1567. 39360 *CFGFE2
  1568. 39370  LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの内容に誤りがあります。 家計簿を終了します。"
  1569. 39380  CLOSE:WAIT 100:SYSTEM
  1570. 39390 *CFGFE3
  1571. 39400  LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの項目に不足があります。 家計簿を終了します。"
  1572. 39410  CLOSE:WAIT 100:SYSTEM
  1573. 39420 *CFGREAD
  1574. 39430  IF EOF(1)<>0 THEN *CFGFE3
  1575. 39440  LINE INPUT #1,CFG$
  1576. 39450  IF LEFT$(CFG$,1)="/" THEN 39430
  1577. 39460  RETURN
  1578. 39470 '//////////////////////////////////////////////////
  1579. 39480 '
  1580. 40000 *ボタン座標:'-------------------------------------------------------
  1581. 40010 DATA 3   'SWGN        スイッチグループ数 
  1582. 40090 '/////////////////////////////
  1583. 40100 '-------------------- [G1] メインスイッチグループ
  1584. 40110 '    SWN(G),SMX,SMY,SMW
  1585. 40120 DATA     6 ,0.5,0.6, 1
  1586. 40130 '    XB1 XB2 YB1 YB2 
  1587. 40140 DATA 216,239, 56, 73  '"▲"---------- 1
  1588. 40150 DATA 240,263, 56, 73  '"▼"---------- 2
  1589. 40160 DATA 264,309, 56, 73  '"SELECT"------ 3
  1590. 40170 DATA 552,591, 42, 79  '"実行"-------- 4
  1591. 40180 DATA 592,630, 42, 79  '"取消"-------- 5
  1592. 40210 DATA 592,630,  3, 41  '"END"--------- 6
  1593. 40220 '-------------------- [G2] 分析メニュースイッチグループ
  1594. 40230 '    SWN(G),SMX,SMY,SMW
  1595. 40240 DATA    30 ,0.5,0.6,  0
  1596. 40250 '    XB1 XB2 YB1 YB2 
  1597. 40260 DATA 466,509,131,159  '"決定"-------- 1
  1598. 40270 DATA 510,551,131,159  '"取消"-------- 2
  1599. 40280 DATA 380,399,171,187  '"▲"---------- 3
  1600. 40290 DATA 400,419,171,187  '"▼"---------- 4
  1601. 40300 DATA 483,502,171,187  '"▲"---------- 5
  1602. 40310 DATA 503,522,171,187  '"▼"---------- 6
  1603. 40320 DATA 380,399,209,225  '"▲"---------- 7
  1604. 40330 DATA 400,419,209,225  '"▼"---------- 8
  1605. 40340 DATA 483,502,209,225  '"▲"---------- 9
  1606. 40350 DATA 503,522,209,225  '"▼"----------10
  1607. 40390 '
  1608. 40400 DATA 494,539,301,317  ',"出来事",0---11
  1609. 40405 DATA 310,355,247,263  ',"給 与",0---12
  1610. 40410 DATA 310,355,264,280  ',"臨 時",0---13
  1611. 40420 DATA 310,355,281,297  ',"他収入",0---14
  1612. 40430 DATA 356,401,247,263  ',"食 費",1---15
  1613. 40440 DATA 356,401,264,280  ',"生活費",1---16
  1614. 40450 DATA 356,401,281,297  ',"洗濯代",1---17
  1615. 40460 DATA 402,447,247,263  ',"光熱費",1---18
  1616. 40470 DATA 402,447,264,280  ',"被服費",0---19
  1617. 40480 DATA 402,447,281,297  ',"交際費",0---20
  1618. 40490 DATA 448,493,247,263  ',"娯楽費",0---21
  1619. 40500 DATA 448,493,264,280  ',"酒 代",0---22
  1620. 40510 DATA 448,493,281,297  ',"車維持",0---23
  1621. 40520 DATA 494,539,247,263  ',"教育費",0---24
  1622. 40530 DATA 494,539,264,280  ',"雑 費",0---25
  1623. 40540 DATA 494,539,281,297  ',"他支出",0---26
  1624. 40550 DATA 310,355,301,317  ',"全収入",2---27
  1625. 40560 DATA 356,401,301,317  ',"基支出",1---28
  1626. 40570 DATA 402,447,301,317  ',"全支出",2---29
  1627. 40580 DATA 448,493,301,317  ',"全収支",2---30
  1628. 40600 '-------------------- [G3] 確認スイッチグループ
  1629. 40610 '    SWN(G),SMX,SMY,SMW
  1630. 40620 DATA     2 ,0.8,0.8,  0
  1631. 40630 '    XB1 XB2 YB1 YB2 
  1632. 40640 DATA 552,583, 56, 73  '"OK"---------- 1
  1633. 40650 DATA 584,615, 56, 73  '"NG"---------- 2
  1634. 40690 '
  1635. 40750 '
  1636. 50000 *分析モード項目
  1637. 50010 DATA 9  '10
  1638. 50015 '    "  分析モード  ",開始,終了,項目
  1639. 50016 '       SMOPT(SMODE,  [1]  [2]  [3] ) 0:無効
  1640. 50017 '                                     1:全項目有効
  1641. 50018 '                                     2:合計項目無効
  1642. 50020 DATA "月間合計額推移",   1,  24,   1
  1643. 50030 DATA "月間合計額累積",   1,  24,   1
  1644. 50040 DATA "日別項目別変動",   1,  12,   2
  1645. 50050 DATA "月間収支推移  ",   1,  24,   0
  1646. 50060 DATA "月間日累積推移",   1,   6,   1
  1647. 50070 DATA "項目別比率分析",   1,  48,   0
  1648. 50080 DATA "エンゲル係数推移 ",   1,  18,   0
  1649. 50090 'DATA "年別動向比較  ",   1,  48,   1
  1650. 50100 DATA "月間レポート印刷 ",   1,   0,   0
  1651. 50110 DATA "総計演算処理  ",   0,   0,   0
  1652. 50190 '
  1653. 51300 *項目データ:'        SITM
  1654. 51400 DATA "出来事",0'----- 1
  1655. 51410 DATA "給 与",4'----- 2
  1656. 51420 DATA "臨 時",4'----- 3
  1657. 51430 DATA "他収入",4'----- 4
  1658. 51440 DATA "食 費",1'----- 5
  1659. 51450 DATA "生活費",1'----- 6
  1660. 51460 DATA "洗濯代",1'----- 7
  1661. 51470 DATA "光熱費",1'----- 8
  1662. 51480 DATA "被服費",1'----- 9
  1663. 51490 DATA "交際費",1'-----10
  1664. 51500 DATA "娯楽費",1'-----11
  1665. 51510 DATA "酒 代",1'-----12
  1666. 51520 DATA "車維持",1'-----13
  1667. 51530 DATA "教育費",1'-----14
  1668. 51540 DATA "雑 費",1'-----15
  1669. 51550 DATA "他支出",2'-----16
  1670. 51560 DATA "全収入",2'-----17
  1671. 51570 DATA "基支出",2'-----18
  1672. 51580 DATA "全支出",2'-----19
  1673. 51590 DATA "全収支",2'-----20
  1674. 60000 '
  1675. 60010 ' 座標確認 DEBUG ROUTINE
  1676. 60020 '
  1677. 60030 MOUSE 0:MOUSE 1,0,0,1
  1678. 60040  IF MOUSE(2,1)<>0 THEN STOP
  1679. 60050  IF MOUSE(2,0)=0 THEN 60050
  1680. 60060  X_M=MOUSE(4,0):Y_M=MOUSE(5,0):LX=INT(X_M/8):LY=INT(Y_M/19)
  1681. 60070  LOCATE 2,24:COLOR 7:PRINT "X=";X_M,"Y=";Y_M,"LX=";LX,"LY=";LY;
  1682. 60080  GOTO 60040
  1683. 61000 ' 
  1684. 61100 *分析条件TESTファイル作成
  1685. 61110  DATDRV$="A:\"
  1686. 61120  SX$(1)="1992"
  1687. 61130  SX$(2)="01"
  1688. 61140  SX$(3)="1992"
  1689. 61150  SX$(4)="07"
  1690. 61160  SX$(5)="012345678901234567890123"
  1691. 61165  SX$(5)="0123456789小村利明890123"
  1692. 61170  SX$(6)="00000000"
  1693. 61180  SX$(7)="99999999"
  1694. 61190  SX$(8)="01"
  1695. 61200  GOSUB *ANLSPUT
  1696. 61210 STOP
  1697. 62000 LOCATE 2,6:COLOR 0'
  1698. 62010 PRINT "1992.02.14(日) 給  与 00000000 ";STRING$(32,"A");
  1699. 62100 LOCATE 2,7:COLOR 0
  1700. 62110 PRINT "1992.02.14 ";STRING$(64,"A");
  1701. 62120 STOP
  1702.